使GradientDrawable无效

时间:2018-09-06 15:24:58

标签: android xml kotlin reset

我有以下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值或类似的东西吗?

1 个答案:

答案 0 :(得分:1)

在更改其颜色之前,请尝试在mutate()上调用drawable

根据setColor(int argb)文档,它指出:

  

更改颜色将影响从资源加载的所有可绘制对象的实例。建议在更改颜色之前先调用mutate()。

所以也许这也会影响到你。