Theme.Light不适用于android API 9级

时间:2013-06-07 15:19:58

标签: android themes

我使用Holo.Light主题创建了我的Android应用程序。我在Holo.Light上的图标看起来很棒,在一个真正的API级别为17的设备上,在模拟器中它也适用于API级别8,但是当我在一个API级别为9的旧手机上试用它时,我可以很难看到图标因为菜单按钮的背景很暗,但我相信我把它设置得很亮。

styles.xml:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>
    <style name="AppTheme" parent="AppBaseTheme">
    </style>
</resources>

值-V11 / styles.xml:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
    </style>
</resources>

和我的清单的开头:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<application android:theme="@style/AppTheme"

我也有android-support-v4.jar,虽然我不确定是否有必要这样做。

2 个答案:

答案 0 :(得分:2)

直到Android的更高版本才包含Holo,因此您无法在旧版本上使用它。但是,您可以使用HoloEverywhere,其中包含所有Holo主题并与2.1 +兼容。

答案 1 :(得分:1)

我想你不知道制造商对Theme.Light做了什么。从Android 4开始,如果Google Play在设备上运行,则保证Holo主题不会被制造商更改(我认为如果检测到更改,Google Play的保护功能就会拒绝运行)。

在Android 4之前,没有任何主题的保证,因此制造商可能决定对原始Theme.Light进行任意更改,例如更改菜单按钮的背景。您的应用程序在模拟器中工作的事实支持这一理论。

在该设备上安装“API演示”以查看主题的真实外观(请参阅android-sdk/samples/android-17/ApiDemos)。

除了从Theme.Light延伸之外,你应该为所有对你的应用程序很重要的样式指定显式值(这很乏味),或者像Eric Zhang建议的那样去HoloEverywhere。