1

我的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>
4

2 回答 2

1

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

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

于 2013-01-11T17:16:33.227 回答
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>
于 2013-01-11T16:51:10.807 回答