【问题标题】:Java android NavigationView change color icon in itemJava android NavigationView更改项目中的颜色图标
【发布时间】:2017-08-31 12:11:46
【问题描述】:

我想在 NavigationView 中更改项目中的颜色图标,我尝试放置一个不同的图标(具有不同颜色的图标),但它不能正确工作我只看到灰色图标,但我放置了蓝色和红色图标

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="@string/settings">
        <menu>
            <item
                android:id="@+id/settings"
                android:icon="@drawable/ic_action_settings"
                android:title="@string/settings" />
        </menu>
    </item>

    <item android:title="@string/filtr">
        <menu>
            <item
                android:id="@+id/all"
                android:icon="@drawable/ic_action_cut"
                android:title="@string/all" />
            <item
                android:id="@+id/not_done"
                android:icon="@drawable/ic_action_cut2"
                android:title="@string/not_done" />
        </menu>
    </item>

    <item android:title="@string/sort">
        <menu>
            <item
                android:id="@+id/sort_default"
                android:icon="@drawable/ic_action_sort"
                android:title="@string/sort_default" />
            <item
                android:id="@+id/sort_by_distance"
                android:icon="@drawable/ic_action_sort"
                android:title="@string/sort_by_distance" />
        </menu>
    </item>

</menu>

【问题讨论】:

  • 你用的是矢量图标吗?
  • @VishalVaishnav no png

标签: java android android-navigationview


【解决方案1】:

如果您想动态更改项目的颜色,则必须在 Activity 代码中的某处执行此操作:

final Menu menu = navView.getMenu();
final MenuItem menuItem = menu.findItem(id);
final Drawable itemIcon = menuItem.getIcon().mutate();
itemIcon.setColorFilter(color, PorterDuff.Mode.SRC_IN);

使用 Drawable 的 mutate() 方法,否则您将为特定 Drawable 的每次迭代应用颜色更改。

编辑:

我刚刚读到您没有使用 VectorDrawable。用那个。从你的drawables的名字来看,你可以使用谷歌提供的图标。

您可以通过导航到您的 Drawable 资源文件夹在 AndroidStudio 中找到它们。 然后右键单击它,新建 > 矢量资源。 资产类型:材质图标。 选择您要使用的图标,然后应用上面的代码。

【讨论】:

    【解决方案2】:

    在您的 java 代码中添加以下行:

    mNavigationView.setItemIconTintList(null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多