我有以下xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
<solid android:color="@color/color_primary_dark" />
<size android:width="25dp" android:height="25dp" />
<stroke android:width="1dp" android:color="@android:color/white" />
</shape>
在我的应用程序中的某个时候,我会更改这种形状的颜色,如下所示:
// priority_button has this shape as is src
(priority_button.drawable as GradientDrawable).setColor(ContextCompat.getColor(this, android.R.color.holo_orange_light))
问题是:如果我销毁该活动,然后重新打开同一活动,则此形状将保持我设置的最后一种颜色(在本例中为android.R.color.holo_orange_light),并且我想重置该形状的颜色与xml(R.color.color_primary_dark)中定义的颜色相同。
由于我以编程方式设置颜色,因此我认为自己是在更改xml本身,并且当重新打开活动并绘制视图时,它将获得我设置另一种颜色的xml。
有什么方法可以重置xml值或类似的东西吗?
答案 0 :(得分:1)
在更改其颜色之前,请尝试在mutate()
上调用drawable
。
根据setColor(int argb)文档,它指出:
更改颜色将影响从资源加载的所有可绘制对象的实例。建议在更改颜色之前先调用mutate()。
所以也许这也会影响到你。