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

时间:2017-01-11 10:38:51

标签: android xml menu tint

我正在构建一个带有动作栏上几个菜单的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的样子。它包含一个drawable和一个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不是。

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

1 个答案:

答案 0 :(得分:1)

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

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