我使用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,虽然我不确定是否有必要这样做。
答案 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。