如何改变Android应用程序在运行时的外观

时间:2015-07-03 12:37:23

标签: android colors android-xml android-theme

我在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,也无法更改引用的颜色。因此,指定更多主题(使用硬编码颜色)可能是一个选项,但在这种情况下,动态获得颜色的元素会发生什么?此外,用户无法选择任何颜色,但必须仅使用我在主题中指定的颜色。

我错过了一些明显的东西吗?如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您无法在运行时更改资源文件中的值。

如果您希望允许用户自定义应用中的颜色,您需要自己管理这些颜色,可能使用资源文件提供默认值或存储用户可以选择的选项。