Android:如何为不同的Android版本使用不同的主题?

时间:2013-01-15 10:15:27

标签: android themes manifest

MinSDKVersion = 7 TargetSDKVersion = 17

如果用户拥有SDKVersion 11或更高版本,我想将主题设置为Theme.Holo.Light。 它在这里对我不起作用。当我在3.1设备上启动应用程序时,它只使用Theme.Light:

enter image description here

当我在版本低于3.1

的设备上运行此应用程序时也是如此

我的文件夹结构:

enter image description here

清单:

    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme" >

值-V11:

<resources>

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="@android:style/Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Light">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>


<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>

其他值文件夹:

<resources>

<!--
    Base application theme, dependent on API level. This theme is replaced
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="@android:style/Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.
    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="@android:style/Theme.Light">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>

    <style name="MyTheme" parent="@android:style/Theme.Light">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>

我该如何正确使用?

此致 Marco Seiz

2 个答案:

答案 0 :(得分:6)

为什么在styles.xml文件中有两次主题?

<style name="AppTheme" parent="@android:style/Theme.Light">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>


<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>

删除您不需要的那个(在本例中为Theme.Light主题):

值-V11:

<style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>

值:

<style name="MyTheme" parent="@android:style/Theme.Light">
    <!-- Any customizations for your app running on devices with Theme.Holo here -->
</style>

答案 1 :(得分:2)

将@Ahmad提供的解决方案放在他所说的目录中名为 themes.xml 的新文件中: - )

如果您使用多语言和多语言,您可以查看我在几分钟之前做过的类似问题......并得到了答案:

Multilanguage and multitheme at same time