내 탐색 서랍의 메뉴 내 항목 옆에 아이콘을 표시하려고하지만 어떤 이유로 든 아이콘이 항상 원래 색상 (갈색)이 아닌 회색으로 나타납니다. 아이콘의 원래 색상을 표시하기 위해이 문제가 발생하지 않도록하는 방법이 있습니까?
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