我想保留一些没有着色的图标,有些图标有色。 现在我有:
app:itemIconTint="@color/menu_icons_selector"
它会显示所有图标。
我试图让所有图标都没有着色
mNavigationView.setItemIconTintList(null);
然后
mNavigationView.getMenu().getItem(4).getIcon().setColorFilter(redColor, PorterDuff.Mode.SRC_ATOP);
仅将色调设置为第4项,但这不起作用 - 所有图标现在都没有着色,第4项也没有着色。
答案 0 :(得分:9)
这对我有用....
通过这种方式,您可以以编程方式对单个导航MenuItem
图标颜色进行着色
navigation.getMenu().findItem(R.id.navItem1).getIcon().setColorFilter(Color.RED,PorterDuff.Mode.SRC_IN);
答案 1 :(得分:1)
您可以将图标“包装”为可绘制(res / drawable)并应用适用的色调
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_menu_icon"
android:tint="@color/pink"/>
答案 2 :(得分:0)
如果您的图标位于ImageView
,则可以使用setColorFilter
。
就像我正在处理的应用程序中的示例一样,在navigationDrawer中选中图标时,图标会被着色。
ImageView iconView = (ImageView) view.findViewById(R.id.icon);
iconView.setColorFilter(selected ?
getResources().getColor(R.color.navdrawer_icon_selected_tint) :
getResources().getColor(R.color.navdrawer_icon_tint));
您也可以将setColorFilter
直接应用于Drawable
。