仅动态更改Drawable的某个部分

时间:2012-06-01 10:18:55

标签: android android-view

我有一个以ShapeDrawable为背景的View,我希望能够只更改Drawable的背景颜色(“solid”部分),而不更改其他部分(例如“stroke”)。有办法实现吗? 感谢。

2 个答案:

答案 0 :(得分:0)

setColorFilter()怎么样?

您可以将它与invalidate()结合使用,以便重绘drawable。请查看这些链接以供参考

ShapeDrawable colorfilter

Drawable InvalidateSelf

我在堆栈上也遇到了一个不错的帖子。看看这个。 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,因此对于其他可绘制类型,必须搜索另一种方式。