如何使用颜色选择器为子菜单图标着色?

How to tint sub-menu icon with a color selector?

我正在构建一个 android 应用程序,在操作栏上有多个菜单。这是 menu.xml.

<menu> 
 <item
        android:id="@+id/menu_comment"
        android:icon="@drawable/gsm_comment_selector"
        android:title="@string/COACH_COMMENT"
        app:showAsAction="always"/>

    <item
        android:id="@+id/menu_more"
        android:icon="@drawable/menu_more_selector"
        android:title="@string/MORE"
        app:showAsAction="always">
        <menu>
            <item
                android:id="@+id/menu_share"
                android:icon="@drawable/menu_share_selector"
                android:title="@string/SHARE"/>
            <item
                android:id="@+id/menu_help"
                android:icon="@drawable/menu_help_selector"
                android:title="@string/HELP"/>
        </menu>
    </item>
</menu>

这就是 XXX_selector 的样子。它包含一个可绘制对象和一个 template_selector(颜色状态列表),因此我可以在单击它时更改图标颜色。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/ic_more_vert_white_24dp"
        android:tint="@color/template_selector"/>

结果是当按下menu_comment和menu_more时,它的图标颜色会改变。但是 menu_share 和 menu_help 不是。

那我应该怎么做才能解决呢? 谢谢

您应该可以执行以下操作(从 onCreateOptionsMenu 调用)

    Drawable drawable = DrawableCompat.wrap(menuItem.getIcon());
    DrawableCompat.setTint(drawable.mutate(), context.getResources().getColor(tint));
    view.setIcon(drawable);