【问题标题】:Android Providing Styles Resources for GingebreadAndroid 为 Gingerbread 提供样式资源
【发布时间】:2013-07-08 22:50:26
【问题描述】:

我在为姜饼或旧版本的 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>

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

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

【问题讨论】:

    标签: java android themes android-2.3-gingerbread


    【解决方案1】:
    <style name="LightTheme" parent="android:Theme.Light"></style>
    
    <style name="ColorsTheme" parent="android:Theme.Holo"></style>
    

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

    【讨论】:

    • 但是姜饼“Light”主题的样式定义是什么?我试图找到一些关于它的信息但失败了,在那部分没有来自 eclipse 的提示 :( 我可以在清单上使用“Theme.Light”并作为应用程序的默认主题,但仍然无法识别当我使用它时主题改变:(
    • 我还从github.com/Prototik/HoloEverywhere 获得了库“HoloEverywhere”,但是太混乱了!我不知道怎么用它 o.O 并且文档太难理解了。
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2011-08-20
    • 2011-08-04
    • 2016-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多