我的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>
答案 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>