Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 仅动态更改可绘制图形的特定部分_Android_Android View - Fatal编程技术网

Android 仅动态更改可绘制图形的特定部分

Android 仅动态更改可绘制图形的特定部分,android,android-view,Android,Android View,我有一个以ShapeDrawable为背景的视图,我希望能够只更改可绘制的背景颜色(“实心”部分),而不更改其他部分(例如“笔划”)。有没有办法做到这一点? 谢谢。设置ColorFilter()怎么样 您可以将其与invalidate()结合使用,以便重新绘制可绘制文件。请查看这些链接以供参考 我也在stack上看到了一篇不错的帖子。再看看这个。 我找到了一个解决方案:实际上,在我的例子中,我已经将drawable定义为XML文件,Android将其转换为GradientDrawable对象

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

设置ColorFilter()怎么样

您可以将其与invalidate()结合使用,以便重新绘制可绘制文件。请查看这些链接以供参考

我也在stack上看到了一篇不错的帖子。再看看这个。

我找到了一个解决方案:实际上,在我的例子中,我已经将drawable定义为XML文件,Android将其转换为GradientDrawable对象,而不是ShapeDrawable,因此我将其转换为RTT(运行时类型),然后使用其setColor函数:

GradientDrawable colorBackground=(GradientDrawable)currentColorView.getBackground();
colorBackground.setColor(color);
正如我所说,它只适用于GradientDrawable,所以对于其他可绘制类型,必须搜索另一种方法