12

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

app:itemIconTint="@color/menu_icons_selector"

它为所有图标着色。

我正在尝试使所有图标都没有着色

mNavigationView.setItemIconTintList(null);

进而

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

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

4

3 回答 3

12

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

navigation.getMenu().findItem(R.id.navItem1).getIcon().setColorFilter(Color.RED,PorterDuff.Mode.SRC_IN);
于 2016-02-03T05:02:10.067 回答
2

您可以将图标“包装”为可绘制(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"/>
于 2015-09-07T11:43:06.807 回答
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

于 2015-09-07T12:04:56.087 回答