내비게이션 드로어 항목 아이콘이 원래 색상을 나타내지 않음
네비게이션 드로어의 메뉴 항목 옆에 아이콘을 표시하려고 하는데 어떤 이유에서인지 아이콘이 항상 원래 색상(갈색)이 아닌 회색으로 표시됩니다.아이콘의 원래 색상을 나타내기 위해 이를 방지할 수 있는 방법이 있습니까?
MainActivity.java
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
if (navigationView != null) {
setupDrawerContent(navigationView);
}
}
private void setupDrawerContent(NavigationView navigationView) {
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
return true;
}
});
}
}
drawer_view.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Section">
<menu>
<item
android:id="@+id/navigation_item_1"
android:icon="@drawable/ic_browncircle"
android:title="Sub item 1" />
</menu>
</item>
</menu>
여기서 답을 찾았습니다.https://stackoverflow.com/a/30632980/875249
링크를 피하려면 다음 절차를 따릅니다.
mNavigationView.setItemIconTintList(null);
이렇게 하면 모든 상태 기반 색칠이 비활성화되지만 자체 목록을 지정할 수도 있습니다.나한테는 아주 잘 먹혔어!
여기에서는 색상 상태 목록을 작성하는 방법에 대한 자세한 내용을 볼 수 있지만, 매우 간단합니다.http://developer.android.com/reference/android/content/res/ColorStateList.html
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/primary" />
<item android:state_checked="false" android:color="@android:color/white" />
</selector>
사용하다
mNavigationView.setItemIconTintList(null);
맞아요.또한 모든 아이콘이 하나의 색상표(모두 흰색)로 표시되는 경우 xml 파일을 통해 설정할 수 있습니다 - app: itemIconTint="@android:color/white"
내 경우:
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:clickable="true"
app:headerLayout="@layout/nav_header_main"
app:itemTextColor="@android:color/white"
app:menu="@menu/activity_main_drawer"
android:background="@android:color/black"
app:itemIconTint="@android:color/white"
/>
내 앱에서 비슷한 걸 해봤어.네, 아이콘 색상은 변하지 않는 것 같습니다.하지만 다른 해결 방법을 찾아냈습니다.여기 있습니다.ic_browncircle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:tint="@color/brown"
>
<size
android:height="3dp"
android:width="3dp"
/>
<solid android:color="@color/brown"/>
</shape>
그건 당신과 비슷하지만 아무런 효과도 없고 색깔도 변하지 않는 것 같아요.
그래서 제가 한 일은 이렇습니다.
navigationView.getMenu()
.findItem(R.id. navigation_item_1)
.getIcon()
.setColorFilter(Color.parseColor("#b69260"), PorterDuff.Mode.SRC_ATOP);
효과가 있는 것 같아요결과는 이렇습니다.
탐색 드로어가 있는 프로젝트를 생성하는 경우, 이 탐색 드로어는Android Studio
제공.메인 액티비티 클래스에서는, 이 코드 라인을 간단하게 추가할 수 있습니다.navigationView.setItemIconTintList(null);
고객님께onCreate
방법.이렇게.
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <----- HERE
setupDrawerContent(navigationView);
5.0 이하에서는 사용할 수 있을지 모르겠지만 색칠된 드로잉 가능.
도면 파일을 만들고 다음 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_browncircle"
android:tint="@color/brownColor"/>
그런 다음 그릴 수 있는 메뉴 항목을 방금 만든 메뉴 항목으로 변경합니다.만약 그것이 효과가 없다면, 나는 다른 해결책을 확신할 수 없다.이 라이브러리를 사용해 보세요.https://github.com/mikepenz/MaterialDrawer 저는 이 라이브러리를 프로젝트에 많이 사용합니다.
xml에 한 줄만 추가
app:itemIconTint="@color/white"
이 코드가 MainActivity.java로 동작하지 않는 이유
NavigationView.setItemIconTintList(null); // not working
쓸 수 있어요.
MainActivity.java
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setItemIconTintList(null); // <-- HERE add this code for icon color
해결책을 찾았어요
1) [Design]탭으로 이동합니다.
2) navView를 클릭합니다.
3) 속성 항목 검색
4) 기입null
를 누릅니다.
추가
android:tint="@color/colorPrimary"
BottomNavigationView navigationbtn = findViewById(R.id.bottomNavigationView);
BottomNavigationMenuView mbottomNavigationMenuView =
(BottomNavigationMenuView) navigationbtn.getChildAt(0);
View view3 = mbottomNavigationMenuView.getChildAt(2);
BottomNavigationItemView itemView3 = (BottomNavigationItemView) view3;
itemView3.setIconTintList(null);
언급URL : https://stackoverflow.com/questions/31394265/navigation-drawer-item-icon-not-showing-original-colour
'programing' 카테고리의 다른 글
Laravel mysql 마이그레이션 오류 (0) | 2022.09.30 |
---|---|
Java를 사용하여 파일이 있는 폴더를 삭제하는 방법 (0) | 2022.09.30 |
SIGTERM 신호를 정상적으로 처리하는 방법 (0) | 2022.09.23 |
__getattr_와 __getattribute_의 차이점 이해 (0) | 2022.09.23 |
스프링 보안 표현식 언어 주석에서 사용할 사용자 지정 메서드를 만드는 방법 (0) | 2022.09.23 |