【发布时间】:2016-09-08 02:14:03
【问题描述】:
说明
在尝试更改位于深色背景上的可绘制对象的颜色时,我遇到了颜色会稍微改变的问题。
在下图中,您将看到具有白色背景的顶视图具有深蓝色图标颜色,但位于深色背景之上的下方视图具有浅蓝色图标。
无论包含视图的背景颜色如何,可绘制颜色都应保持一致。
代码
ImageView fairInfoEmailImageView = (ImageView) getView().findViewById(R.id.fairInfoEmailImageView);
fairInfoEmailImageView.setColorFilter(dashboardIconColor, PorterDuff.Mode.MULTIPLY);
ImageView fairInfoSurveyImageView = (ImageView) getView().findViewById(R.id.fairInfoSurveyImageView);
fairInfoSurveyImageView.setColorFilter(dashboardIconColor, PorterDuff.Mode.MULTIPLY);
注意*:下面的图像是通过 ImageView 的可绘制对象都是白色的,然后应用覆盖颜色的 MULTIPLY 颜色过滤器来实现的。
尝试
- 尝试了 ColorFilters、Tints 等,但我相信这些会将背景颜色带入方程式。
问题
有没有办法在不使用 ColorFilter 的情况下动态更改可绘制对象的颜色?
随时询问更多代码或有关该问题的任何问题。
【问题讨论】:
-
你的APP最低API等级是多少??
-
15。谢谢你的提问。我会更新问题。
-
为了加快速度,我建议在这里materialdesignicons.com 获取您的图标,您可以在其中自定义颜色,因此有 2 个副本。它们体积小,因此不会影响您的应用程序的大小。我问的是最小 APi,因为从 android 5x 和 ApI 20+ 开始,您可以使用 Vector drawables,因此很容易通过代码更改颜色。
-
我忘了提 -- 在这里也可以通过代码查看可能的解决方案 --> stackoverflow.com/questions/20121938/…
-
非常感谢 Tasos 的帮助,但这些实际上是 Vector drawables。我已经尝试了所有可能的着色方法,但图标实际上是相同的颜色(请参阅下面的 Nick Yelito 的回答)。您可以通过查看像素来验证。这是由对比背景引起的视觉错觉,哈哈。再次感谢您的 cmets。
标签: android