如何更改Android colors.xml以根据用户首选项进行更改

时间:2015-07-08 04:36:04

标签: android xml

登录后,我会在成功时返回一个User对象,并且在对象内,我能够告诉用户的类型。我希望每个用户共享相同的布局但不同的主题颜色。有没有办法在colors.xml文件中声明多组颜色?或者是否必须通过创建一个完整的不同colors.xml文件来完成?

我有这样的事情:

对于管理员:

<resources>
    <color name="primary">#E53935</color>
    <color name="primary_dark">#B71C1C</color>
    <color name="accent">#212121</color>
    <color name="background_color">#F5F5F5</color>
    <color name="text_color_primary">#FAFAFA</color>
    <color name="drawer_fragment_background">#424242</color>
</resources>

普通用户:

<resources>
    <color name="primary">#EEEEE</color>
    <color name="primary_dark">#BBBBB</color>
    <color name="accent">#200001</color>
    <color name="background_color">#C5BEA3</color>
    <color name="text_color_primary">#FAFAFA</color>
    <color name="drawer_fragment_background">#424242</color>
</resources>

基于User对象,我希望@color/primary指向特定的颜色集。这是由sharedPreference文件完成的吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案我想你必须在colors.xml中定义不同的颜色a_primary =“#000”b_primary =“#111”然后你可以在styles.xml中创建不同的样式

<style name="a_Theme" parent="AppTheme">
        <item name="colorPrimary">@color/a_primary</item>
</style>

<style name="b_Theme" parent="AppTheme">
        <item name="colorPrimary">@color/b_primary</item>
</style>

然后根据intent params onCreate将主题应用为setTheme(android.R.style.a_Theme);