2

我使用 Holo.Light 主题制作了我的 android 应用程序。我的图标在 API 级别 17 的真实设备上的 Holo.Light 上看起来不错,在模拟器中它也适用于 API 级别 8,但是当我在 API 级别 9 的旧手机上尝试它时,我可以几乎看不到图标,因为菜单按钮的背景是深色的,尽管我相信我将它设置为浅色。

样式.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,虽然我不确定它是否有必要工作。

4

2 回答 2

2

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

于 2013-06-07T17:27:31.007 回答
1

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

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

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

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

于 2013-06-10T10:13:21.540 回答