菜单项图标变色

5

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

<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>

这个在我的工具栏中的一些活动中使用,当被点击时,它会弹出一个菜单,目前只有一个选项,但未来可能会有更多。

除了图标之外,一切正常。图标是传统的白色三个点的矢量图像。根据"showAsAction"设置的不同,它会改变颜色。

当前"showAsAction"被设置为"never",因此单击时它会显示一个菜单,这是我想要的,但图标会变成深灰色。如果我将此选项设置为"always",则图标会变为白色,但我会失去下拉菜单。

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


尝试这个:https://dev59.com/pGIj5IYBdhLWcg3wy3_H - Ankita
基本上你想要将三个点的图标改为三个白点? - Aiko West
工具栏默认显示灰色的三个点图标,以指示您单击以放置菜单的位置。因此,您在菜单中添加了一个带有三个点图标的项目? - user8959091
所以你的意思是当有下拉菜单时,灰色是默认值,并且覆盖了我设置的图标,我不知道它会这样做。谢谢。 - Demonic218
2个回答

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

3
如果您只想更改下拉菜单的三个点图标,可以在Styles.xml中更改此设置:
在您的主题样式中定义:
<item name="android:actionOverflowButtonStyle">@style/MyTheme.OverFlow</item>

然后使用你想要显示的图标定义Overflow,以取代3DotsIcon(在你的情况下是带有3个白点的图标)。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接