我正在构建一个为其 Activity 使用一些主题的应用程序。它们在运行 Android 前 ICS 版本的手机上都能正常工作,但出于某种原因,当我在 Galaxy Nexus(运行 4.1)和 Nexus S(运行 4.0.4)上应用主题时,背景总是黑色。
这是我正在使用但不起作用的主题之一:
<style name="BlueStyle" parent="@android:style/Theme.Holo.NoActionBar">
<item name="android:background">@color/Blue</item>
<item name="android:textColor">@android:color/white</item>
<item name="android:textSize">16dip</item>
</style>
蓝色在我的 res/values/colors.xml
中定义。主题位于 res/values-v11/styles.xml
中,并在我的 list 中引用如下:
<activity
android:name=".activity.SplashActivity"
android:theme="@style/BlueStyle"
android:configChanges="orientation|keyboardHidden|screenSize"/>
就像我说的,类似的主题(在 res/values
下,使用 @android:style/Theme.NoTitleBar
作为父级)对同一个 Activity 工作正常在 Android 的 pre-ICS 版本中。即使我进入布局文件并制作布局的背景 @color/Blue
,如果我将主题分配给 Activity,它仍然是黑色的。但是,我发现,如果我将主题设置为 @android:style/Theme.NoTitleBar
,则 Activity 将使用我在布局文件中强制设置的蓝色。
我也尝试过将 BlueStyle 设置为整个应用程序的主题,但没有任何区别。
以前有其他人遇到过这个问题吗?这是我第一次尝试同时支持 v11 之前和 v11+ 的主题,所以我可能会犯一些非常明显的错误。
编辑: 还忘了说,当我的 Activity 启动时,我确实在一瞬间看到了蓝色,但随后背景变成了黑色。不确定该信息是否有帮助。
编辑#2:我也刚刚在运行 3.2 的 Galaxy Tab 10.1 上进行了测试,它也有问题。
最佳答案
从外观上看,主题化 Activity 在 Honeycomb 及更高版本中简直是破烂不堪。我通过删除特定于 Activity 的主题并将样式添加到我的布局文件来“解决”我的问题。
如果遇到此问题,请确保在将主题应用到布局之前从 AndroidManifest.xml 中的 Activity 中删除主题。否则,问题将持续存在。
关于android - ICS 中似乎被忽略的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11368787/