如何使自定义windowBackground主题样式在所有Android设备上都能正常工作?

如何使自定义windowBackground主题样式在所有Android设备上都能正常工作?,android,android-layout,android-activity,android-manifest,android-styles,Android,Android Layout,Android Activity,Android Manifest,Android Styles,我正在尝试让我的所有活动都有一个自定义的主题样式,应该如下所示: 此主题适用于许多设备,包括Nexus 7、三星Galaxy S4和三星Droid Charge(运行姜饼)。然而,在其他设备上,如HP Slate 7和摩托罗拉Droid RAZR,它最终看起来是这样的: 我的AndroidManifest.xml应用程序的标记中有以下内容: android:theme="@style/AppTheme" 主题如res/values/styles.xml中所示: <style name

我正在尝试让我的所有活动都有一个自定义的主题样式,应该如下所示:

此主题适用于许多设备,包括Nexus 7、三星Galaxy S4和三星Droid Charge(运行姜饼)。然而,在其他设备上,如HP Slate 7和摩托罗拉Droid RAZR,它最终看起来是这样的:

我的
AndroidManifest.xml
应用程序的
标记中有以下内容:

android:theme="@style/AppTheme"
主题如
res/values/styles.xml
中所示:

<style name="AppBaseTheme" parent="@android:style/Theme.Light.NoTitleBar">

</style>

<style name="AppTheme" parent="@style/AppBaseTheme">
    <item name="android:windowBackground">@color/background</item>
</style>
最后,它出现在
styles.xml
res/values-v14
下:

<style name="AppBaseTheme" parent="@android:style/Theme.DeviceDefault.Light">
</style>

我试图为每个活动定义主题,并手动使用
onCreate()
中的
setTheme()
函数,但没有任何效果。我还尝试在每个
活动中手动设置背景,但这也不起作用。我能做些什么来解决我的问题


编辑:有趣的是,在样式中设置
android:background
可以使其工作,但是不应该有背景的元素也会接收该背景色。

解决问题的关键是将主题中的
android:windowBackground
更改为以下内容:

<item name="android:windowBackground">@drawable/default_background</item>

似乎有些设备不支持接受此元素的颜色。

我发现最新版本的Android Studio要求样式的父级必须是Theme.AppCompat。另外,在values目录中创建colors.xml文件(在资源标记之间具有命名颜色元素)也是一种很好的样式。将RGB值作为命名颜色元素的值。使用@color/在样式中引用它们

<!--colors.xml in values folder-->
<resources>
    <color name="color1">#ffb62a23</color>
    <color name="color2">#ffedeba6</color>
    <color name="color3">#00ff00</color>
</resources>

<!--style tags -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowBackground">@color/color2</item>
    <item name="android:textColorPrimary">@color/color1</item>
    <item name="android:textColorSecondary">@color/color2</item>
    <item name="android:textColorTertiary">@color/color3</item>
</style>

#ffb62a23
#第6条
#00ff00
@颜色/颜色2
@颜色/颜色1
@颜色/颜色2
@颜色/颜色3

我有一个运行4.1的S2,它似乎可以从我的colors.xml中随机选择一种颜色作为窗口背景。这个解决方案为我解决了这个问题。我希望我知道它为什么坏了!
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/background"/>
</shape>
<!--colors.xml in values folder-->
<resources>
    <color name="color1">#ffb62a23</color>
    <color name="color2">#ffedeba6</color>
    <color name="color3">#00ff00</color>
</resources>

<!--style tags -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:windowBackground">@color/color2</item>
    <item name="android:textColorPrimary">@color/color1</item>
    <item name="android:textColorSecondary">@color/color2</item>
    <item name="android:textColorTertiary">@color/color3</item>
</style>