如何覆盖xml中的默认背景颜色?

时间:2013-01-11 16:49:33

标签: android android-layout inheritance background-color overwrite

我的main.xml文件包含有关应用背景颜色的信息:

android:background="@color/background_default"

我也有不同的样式,用户可以选择,保存在其他xml文件中。当用户选择其中一个时,我希望覆盖main.xml中包含的默认值。

不幸的是,只有文字颜色被覆盖,背景颜色不会改变。这是自定义样式之一:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Light">
        <item name="android:textColor">@color/text_light</item>
        <item name="android:windowBackground">@color/background_light</item>
        <item name="android:colorBackground">@color/background_light</item>
    </style>
</resources>

2 个答案:

答案 0 :(得分:1)

您可以从main.xml中省略android:background="@color/background_default",并应用使用该颜色的默认主题。然后,当用户更改主题时,背景将随之改变。

您不能使用主题覆盖在view xml中指定的颜色;视图更具体,并覆盖了主题。

答案 1 :(得分:0)

使用样式上的parent属性继承默认主题,然后覆盖:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Light" parent="android:Theme">
        <item name="android:textColor">@color/text_light</item>
        <item name="android:windowBackground">@color/background_light</item>
        <item name="android:colorBackground">@color/background_light</item>
    </style>
</resources>