菜单项图标改变颜色

Menu item icon changes color

我创建了一个只有一个项目的菜单。

<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",则图标会变为白色,但我会丢失下拉菜单。

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

试试这个代码

@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);
    }
}

如果您只想更改 DropDownMenu 的三点图标,您可以在 Styles.xml:

中进行更改

在您的主题样式中定义

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

然后用你想要显示的图标定义溢出,而不是 3DotsIcon(在你的例子中是带有 3 个白点的图标)

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