菜单项图标改变颜色
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>
我创建了一个只有一个项目的菜单。
<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>