我在colors.xml中定义了颜色,如下所示
<resources>
<color name="primary">#5D4037</color>
<color name="primary_dark">#4E342E</color>
<color name="accent">#FF3D00</color>
</resources>
我还在styles.xml中定义了主题,如下面的
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
此外,在代码的许多地方,我使用这些颜色来设置文本等。
现在我想让用户选择更改颜色。我读到我无法更改colors.xml中指定的颜色。此外,即使我更改了theme
,也无法更改引用的颜色。因此,指定更多主题(使用硬编码颜色)可能是一个选项,但在这种情况下,动态获得颜色的元素会发生什么?此外,用户无法选择任何颜色,但必须仅使用我在主题中指定的颜色。
我错过了一些明显的东西吗?如何做到这一点?
答案 0 :(得分:0)
您无法在运行时更改资源文件中的值。
如果您希望允许用户自定义应用中的颜色,您需要自己管理这些颜色,可能使用资源文件提供默认值或存储用户可以选择的选项。