菜单项图标更改颜色

时间:2018-07-04 07:32:14

标签: android vector-graphics

我已经创建了一个菜单项。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/syncButton"
        android:title="Sync"
        android:icon="@drawable/ic_sub_menu"
        app:showAsAction="never"/>
</menu>

此功能用于我在工具栏中的某些活动,当单击它会下拉菜单,当前只有一个选项,但将来可能会更多。

除图标外,其他所有功能均正常运行,它是传统的3个白色点的矢量图像。取决于设置的showAsAction”,因为它会更改颜色。

当前将showAsAction设置为never,因此单击时会显示菜单,这是我想要的,但是图标变为深灰色。如果我将此选项设置为“ always”(始终),则图标将变为白色,但会丢失下拉菜单。

如何在保持图标为白色的同时保持下拉菜单?

2 个答案:

答案 0 :(得分:3)

尝试使用此代码

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
    menuInflater.inflate(R.menu.menu_confirm, menu);
    MenuItem action_done = menu.findItem(R.id.action_done);
    action_done.setIcon(R.drawable.ic_filter);
    menuIconColor(action_done, Color.WHITE);
    super.onCreateOptionsMenu(menu, menuInflater);
}

public void menuIconColor(MenuItem menuItem, int color) {
    Drawable drawable = menuItem.getIcon();
    if (drawable != null) {
        drawable.mutate();
        drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
    }
}

答案 1 :(得分:1)

如果只想更改DropDownMenu的3点图标,则可以在Styles.xml中进行更改:

在主题样式中定义

<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>

,然后用您要显示的图标定义溢出,而不是3DotsIcon(在您的情况下为带有3个白点的图标)

  <style name="MyTheme.OverFlow">
    <item name="android:src">@drawable/yourNewIcon</item>
  </style>