如何使用颜色选择器为子菜单图标着色?
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);
我正在构建一个 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);