我有以下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值或类似的东西?
尝试在改变颜色之前在mutate()
上调用drawable
。
根据setColor(int argb)文档,它声明:
更改颜色将影响从资源加载的drawable的所有实例。建议在更改颜色之前调用mutate()。
所以这也许会对你产生影响。