操作栏菜单项没有正确着色

时间:2017-04-16 10:24:20

标签: java android android-actionbar android-menu

我正在尝试将菜单项颜色设置为Color.WHITE但由于某种原因它无法正常工作。

着色前

enter image description here

着色后

enter image description here

    Drawable drawable = menu.findItem(R.id.action_info).getIcon();
    drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
    menu.findItem(R.id.action_info).setIcon(drawable);

我不明白为什么我只想将图标颜色从灰色变为白色。

1 个答案:

答案 0 :(得分:1)

可能与DrawableCompat有关。我总是使用ColorFilter和PorterDuff进行着色,因为它可以准确指定你想要的重新着色类型(SRC_IN主要适合我想要达到的效果)

尝试改变它:

Drawable drawable = menu.findItem(R.id.action_info).getIcon();
drawable.setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN);
menu.findItem(R.id.action_info).setIcon(drawable); // Actualy, we don't need to do this

修改

我明白了。此效果是由您使用的图像引起的。我猜您使用内置不透明度的默认图标ic_menu_info_details。最好使用您自己的图标,以便根据需要对其进行着色。

基本上我们可以使用相同的图标,没有不透明度。然后这个PorterDuff方法按预期工作(可能也是你早期的代码)。

您可以轻松找到该图标并将其添加到您的项目中。

选项1:

选项2:

  • 使用矢量绘图,然后图像也会在每台设备上自动缩放。

  • 右键单击drawable文件夹

  • 转到New - > Vector Asset

  • 点击更改图标按钮,找到信息图标

别忘了更改menu.xml以便您使用新图标