0

我有一个以 ShapeDrawable 作为背景的视图,并且我希望能够仅更改 Drawable 的背景颜色(“实心”部分),而不更改其他部分(例如“笔划”)。有没有办法做到这一点?谢谢。

4

2 回答 2

0

setColorFilter() 怎么样。

您可以将它与 invalidate() 结合使用,以便重新绘制可绘制对象。看看这些链接以供参考

ShapeDrawable 滤色器

可绘制的 InvalidateSelf

我还在堆栈上看到了一篇不错的帖子。看看这个。 如何更改Android drawable的颜色

于 2012-06-01T10:48:23.350 回答
0

我找到了一个解决方案:实际上,在我的情况下,我将 drawable 定义为 XML 文件,Android 将其转换为 GradientDrawable 对象,而不是 ShapeDrawable,因此我将其转换为 RTT(运行时类型),然后使用它的设置颜色功能:

GradientDrawable colorBackground=(GradientDrawable)currentColorView.getBackground();
colorBackground.setColor(color);

正如我所说,它仅适用于 GradientDrawable,因此对于其他可绘制类型,必须搜索另一种方式。

于 2012-06-02T16:14:01.377 回答