1

main.xml文件包含,除其他外,对应用程序的背景颜色信息:如何在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> 

回答

1

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

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

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> 
+0

'android:Theme' !! – petey

+0

android:主题不起作用,它只覆盖文字颜色 – user1301428