我有一个活动,我需要更改几个元素的颜色,所以一个一个地做可能有点乏味。这些元素有一个共同点,即来自相应资源的颜色。
是否可以以编程方式更改此类资源的值?
例如,制作:
<color name="colorTitle">#212121</color>
然后取另一个十六进制值并将其应用于所有具有colorTitle的元素。
我有一个活动,我需要更改几个元素的颜色,所以一个一个地做可能有点乏味。这些元素有一个共同点,即来自相应资源的颜色。
是否可以以编程方式更改此类资源的值?
例如,制作:
<color name="colorTitle">#212121</color>
然后取另一个十六进制值并将其应用于所有具有colorTitle的元素。
诸如此类的资源
R.colors
在编译时作为常量生成,因此您将无法在运行时更改它们。您可以做的是创建一个函数,该函数返回您想要的颜色,并且所有需要动态更改颜色的视图都通过该方法获取它。例如。为您的整个应用程序创建一个
Activity
包含以下方法的基类:因此,每当视图需要更改颜色时,您只需将函数的结果分配给它,例如 even
TextView
:在示例中,颜色
TextView
是基于变量的状态colorClaro
,如果它改变了,当再次加载视图时,所有获得函数颜色的元素都会改变。将决定是采用一种颜色还是另一种颜色的状态,您可以将其保存在
SharePreferences
数据库中或根据您的选择。不,资源文件中定义的项目,例如
colors.xml
,是只读的。作为一个选项,您可以添加其他相关颜色,并使用您决定的颜色,例如: