操作栏菜单项未正确着色
Action bar menu item not tinting colour properly
我正在尝试将菜单项颜色着色为 Color.WHITE
,但由于某些原因无法正常工作。
调色前
调色后
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);
当我只想将图标颜色从灰色更改为白色时,我不明白为什么会发生这种情况。
可能与 DrawableCompat 有关。我总是使用带有 PorterDuff 的 ColorFilter 进行着色,因为它允许准确指定您想要的重新着色类型(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:
在这里找到图标:http://romannurik.github.io/AndroidAssetStudio/icons-actionbar.html
并将其添加到您的绘图文件夹
选项 2:
使用矢量绘图,那么图像也会在每个设备上自动缩放。
右键单击可绘制文件夹
转到New
-> Vector Asset
单击更改图标按钮,找到信息图标
不要忘记更改 menu.xml
以便使用新图标
我正在尝试将菜单项颜色着色为 Color.WHITE
,但由于某些原因无法正常工作。
调色前
调色后
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);
当我只想将图标颜色从灰色更改为白色时,我不明白为什么会发生这种情况。
可能与 DrawableCompat 有关。我总是使用带有 PorterDuff 的 ColorFilter 进行着色,因为它允许准确指定您想要的重新着色类型(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:
在这里找到图标:http://romannurik.github.io/AndroidAssetStudio/icons-actionbar.html
并将其添加到您的绘图文件夹
选项 2:
使用矢量绘图,那么图像也会在每个设备上自动缩放。
右键单击可绘制文件夹
转到
New
->Vector Asset
单击更改图标按钮,找到信息图标
不要忘记更改 menu.xml
以便使用新图标