具备向下兼容性的Android Holo主题

5

我已经开发了一款支持android:minSdkVersion="7"android:targetSdkVersion="15"的Android应用程序。我使用了自定义主题来继承Android默认主题。

现在,我想把整个应用程序的主题改成Holo主题。有谁能帮助我吗?


1
你的意思是想在运行时通过编程来改变这个吗?那么对于早期的设备呢?你也想让它们使用Holo.Theme主题吗?那么你需要像Holoeverywhere这样的东西。https://github.com/ChristopheVersieux/HoloEverywhere - Dirk Jäckel
HoloEverywhere的链接现在是:https://github.com/Prototik/HoloEverywhere - Vincent Mimoun-Prat
3个回答

10

你可以通过使用不同的样式XML来实现“样式选择器”。

只需在/res/**values**/styles.xml中定义一个名为“StyleSelector”或类似名称的主题即可:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="ThemeSelector" parent="@android:style/Theme.Black">
    ... Your theme definitions
    </style>
</resources>

然后创建一个/res/**values-v11**/styles.xml文件:

<resources>
    <style name="ThemeSelector" parent="@android:style/Theme.Holo">
    </style>
</resources>

现在只需使用“@style/ThemeSelector”应用您的主题,让Android进行魔法操作。 在旧版 Android 上,将加载您的主题定义,在具有 Holo-Support 的新版本中,您的主题将从 Holo 派生。


虽然Android文档提供了相同的信息,但即使在values中指定Theme.Black,在eclipse中仍然会出现错误。我已经到处搜索了,但似乎没有解决方案。此外,我不想使用任何第三方库,比如HoloEveryWhere。 - Manohar
为什么不使用@android:style/Theme呢? - Jeff

3

1

只需在AndroidManifest.xml中修改应用程序标签,使其包含主题即可:

android:theme="@style/Theme.Holo"

例如像这样:
<application android:icon="@drawable/ic_launcher"
             android:label="@string/app_name"
             android:theme="@style/Theme.Holo">

或者您可以按照每个活动的基础进行操作。以下是相关文档: https://developer.android.com/guide/topics/ui/themes.html


我尝试了这种方法,但是它出现了错误:错误:找不到与给定名称匹配的资源(在'value'为'@style/Theme.Holo'的'theme'处)。 - Sanath
这在早期的蜂窝设备上发生了吗?如果是这样,你是否添加了Holoeverywhere库?使用Holoeverywhere时,您必须使用"@style/Theme.HoloEverywhereDark"。 - Dirk Jäckel
这不是运行时错误。这个错误来自于Eclipse。因此我无法构建项目。我将尝试使用HoloEverywhere主题。感谢您的帮助。 - Sanath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接