I want to change a color icon in item in NavigationView, I try put a diffrent icon (icon with diffrent color) but it doesn't work corretly I see only grey icon but I put blue and red icons
<?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>
If you want to change the item's color dynamically, you have to do this somewhere in your Activity code:
final Menu menu = navView.getMenu();
final MenuItem menuItem = menu.findItem(id);
final Drawable itemIcon = menuItem.getIcon().mutate();
itemIcon.setColorFilter(color, PorterDuff.Mode.SRC_IN);
Use the Drawable's mutate()
method, else you will apply the color change for every iteration of the specific Drawable.
Edit:
I just read you're not using VectorDrawable. Use that. Judging by your drawables' name, you can use icons provided by Google.
You can find them in AndroidStudio by navigating to your Drawable resource folder. Then right click it, New > Vector Asset. Asset type: Material icon. Select the icon you wish to use, then apply the code above.