1

我在为姜饼或旧版本的 android 提供不同样式的资源时遇到了一些麻烦。

我已经定义了 2 个不同样式的页面。普通 Styles 和 Styles-v11。对于 android 3.0 和 UP 工作正常,一切正常。我的问题是当我尝试姜饼时,它只是忽略了风格的变化。

款式:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
 <!--
       Styles for v1 to v10
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="DarkTheme" parent="android:Theme"></style>

    <style name="Performance" parent="android:Theme"></style>

    <style name="LightTheme" parent="android:Theme.Light"></style>

    <style name="ColorsTheme" parent="android:Theme.Holo"></style>

    <style name="OsuTheme" parent="android:Theme.Light"></style>

    <style name="BrazilTheme" parent="android:Theme"></style>

    <style name="NeonTheme" parent="android:Theme">
        <item name="android:windowBackground">@android:color/black</item>
    </style>
</resources>

样式-v11:

<resources xmlns:android="http://schemas.android.com/apk/res/android">  
    <!--
        Styles v11
    -->
    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="DarkTheme" parent="android:Theme.Holo"></style>

    <style name="Performance" parent="android:Theme.Holo"></style>

    <style name="LightTheme" parent="android:Theme.Holo.Light"></style>

    <style name="ColorsTheme" parent="android:Theme.Holo"></style>

    <style name="OsuTheme" parent="android:Theme.Holo.Light"></style>

    <style name="BrazilTheme" parent="android:Theme.Holo"></style>

    <style name="NeonTheme" parent="android:Theme.Holo">
        <item name="android:windowBackground">@android:color/black</item>
    </style>

</resources>

我的应用程序有一个设置来检查哪个主题是活动的。

switch (ThemesActivity.newTheme) {
    case ThemesActivity.THEME_DARK:
        setTheme(R.style.DarkTheme);
        setContentView(R.layout.activity_main_dark);
        break;
    case ThemesActivity.THEME_LIGHT:
        setTheme(R.style.LightTheme);
        setContentView(R.layout.activity_main_light);
        break;
    case ThemesActivity.THEME_COLORS:
        setTheme(R.style.ColorsTheme);
        setContentView(R.layout.activity_main_colors);
        break;
    case ThemesActivity.THEME_NEON:
        setTheme(R.style.NeonTheme);
        setContentView(R.layout.activity_main_neon);
        break;
    case ThemesActivity.THEME_PERF:
        setTheme(R.style.Performance);
        setContentView(R.layout.activity_main_performance);
        break;
    case ThemesActivity.THEME_OSU:
        setTheme(R.style.OsuTheme);
        setContentView(R.layout.activity_main_osu);
        break;
    case ThemesActivity.THEME_BRAZIL:
        setTheme(R.style.BrazilTheme);
        setContentView(R.layout.activity_main_brazil);
        break;
    default:
        setTheme(R.style.DarkTheme);
        setContentView(R.layout.activity_main_dark);
        break;
    }

问题在于 Gingerbread 中哪个主题处于活动状态并不重要!总是加载默认的应用主题:(

我无法弄清楚发生了什么问题以及为什么主题更改不适用于旧版本。

非常感谢。

编辑:

我也尝试过使用:

 <style name="OsuTheme" parent="@android:style/Theme.Light"></style>

还是一样的:(主题在运行时不会改变,只有当我在清单上设置主题时才会改变。

在清单上,主题工作正常,问题是当我尝试在运行时更改它时。

4

1 回答 1

1
<style name="LightTheme" parent="android:Theme.Light"></style>

<style name="ColorsTheme" parent="android:Theme.Holo"></style>

主要问题是 Gingerbread 没有来自您扩展的主题的样式资源。这就是它加载默认资源的原因。

于 2013-07-08T07:18:31.453 回答