gpt4 book ai didi

java - 操作栏菜单项未正确着色

转载 作者:行者123 更新时间:2023-11-30 06:47:32 25 4
gpt4 key购买 nike

我正在尝试将菜单项颜色着色为 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);

我不明白为什么会发生这种情况,因为我只想将图标颜色从灰色更改为白色。

最佳答案

可能与 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:

  • 使用 vector 绘图,图像也会在每个设备上自动缩放。

  • 右键单击可绘制文件夹

  • 转到新建 -> vector 资源

  • 单击更改图标按钮,然后找到信息图标

不要忘记更改 menu.xml 以便使用新图标

关于java - 操作栏菜单项未正确着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com