1

ジンジャーブレッドまたは古いバージョンのアンドロイドにさまざまなスタイルのリソースを提供するのに問題があります。

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 に答える