【问题标题】:How to set Tint in NavigationView to some icons如何在 NavigationView 中将 Tint 设置为某些图标
【发布时间】:2015-09-07 11:28:56
【问题描述】:

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

app:itemIconTint="@color/menu_icons_selector"

它为所有图标着色。

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

mNavigationView.setItemIconTintList(null);

然后

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

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

【问题讨论】:

  • 我刚刚看到你已经在使用 setColorFilter 。在这种情况下,如果它不起作用,我的回答可能对您没有多大帮助(但您可以将其留作将来参考)。尝试删除app:itemIconTintsetItemIconTintList。我相信这应该有效。还要确保它实际被调用。我的在 onPostCreate() 中运行。

标签: android navigationview


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这正是我想要的。
【解决方案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"/>

【讨论】:

    【解决方案3】:

    如果您的图标在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

    【讨论】:

    • 是否可以从 NavigationView 获取图标的 ImageViews?
    • 我认为 NavigationView 中没有ImageView。您直接在从getIcon() 获得的Drawable 上应用setColorFilter。无需获取ImageView,因为ImageView 也将其应用于Drawable
    • 正如我所说,我已经将 ColorFilter 设置为 item,但它不起作用
    • 我会尝试删除您的前 2 行。 app:itemIconTintsetItemIconTintList(null) 只保留您发布的第三行。如果这不起作用,我不知道:(
    猜你喜欢
    • 2019-01-08
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2019-10-29
    • 2016-03-30
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多