我有一个以ShapeDrawable为背景的View,我希望能够只更改Drawable的背景颜色(“solid”部分),而不更改其他部分(例如“stroke”)。有办法实现吗? 感谢。
答案 0 :(得分:0)
setColorFilter()怎么样?
您可以将它与invalidate()结合使用,以便重绘drawable。请查看这些链接以供参考
我在堆栈上也遇到了一个不错的帖子。看看这个。 How to change colors of Android drawable
答案 1 :(得分:0)
我找到了一个解决方案:实际上在我的情况下我将drawable定义为XML文件,并且Android将其转换为GradientDrawable对象,而不是ShapeDrawable,因此我将其转换为RTT(运行时类型),并且然后使用它的setColor函数:
GradientDrawable colorBackground=(GradientDrawable)currentColorView.getBackground();
colorBackground.setColor(color);
正如我所说,它仅适用于GradientDrawable,因此对于其他可绘制类型,必须搜索另一种方式。