如何将 NavigationView 中的 Tint 设置为某些图标

How to set Tint in NavigationView to some icons

我想保留一些图标不着色,一些图标着色。 现在我有:

app:itemIconTint="@color/menu_icons_selector"

它为所有图标着色。

我正在尝试让所有图标都不着色

mNavigationView.setItemIconTintList(null);

然后

mNavigationView.getMenu().getItem(4).getIcon().setColorFilter(redColor, PorterDuff.Mode.SRC_ATOP);

只为第 4 个项目设置色调,但这不起作用 - 所有图标现在都没有着色,第 4 个也没有着色。

您可以"wrap"将图标作为可绘制对象 (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"/>

如果您的图标在 ImageView 中,您可以使用 setColorFilter

就像我正在处理的应用程序中的这个示例一样,当在导航抽屉中选择图标时,图标会变色。

 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

这对我有用.... 通过这种方式,您可以通过编程方式为单个导航 MenuItem 图标颜色着色

navigation.getMenu().findItem(R.id.navItem1).getIcon().setColorFilter(Color.RED,PorterDuff.Mode.SRC_IN);