使GradientDrawable失效

问题描述 投票:0回答:1

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

android xml kotlin reset
1个回答
1
投票

尝试在改变颜色之前在mutate()上调用drawable

根据setColor(int argb)文档,它声明:

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

所以这也许会对你产生影响。

© www.soinside.com 2019 - 2024. All rights reserved.