2015-07-03 75 views
1

我已经定义在colors.xml的颜色一样,在styles.xml下面如何改变Android应用程序的外观在运行时

<resources> 
    <color name="primary">#5D4037</color> 
    <color name="primary_dark">#4E342E</color> 
    <color name="accent">#FF3D00</color> 
</resources> 

我还定义主题,像下面

<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

我不认为你可以通过编程改变风格,你需要改变每个元素, – Proxytype

+0

做一个微调,声明这些字段(主要,primary_dark,重音)和点击时调用颜色。 –

回答

0

您不能在运行时更改资源文件中的值。

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