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

时间:2015-09-07 11:28:56

标签: android navigationview

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

app:itemIconTint="@color/menu_icons_selector"

它会显示所有图标。

我试图让所有图标都没有着色

mNavigationView.setItemIconTintList(null);

然后

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

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

3 个答案:

答案 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