0

アプリケーションで ActionBar を使用しています。そして、Android 開発者サイトにあるように、独自のアクションバー テーマをカスタマイズしました。残念ながら、私のスタイルはとにかくうまくいきません。アプリが実行されるたびに、IllegalStateException がスローされます。詳細は、「このアクティビティで Theme.AppCompat テーマ (または子孫) を使用する必要があります。」 です。次に、私のカスタム スタイルは次のとおりです。

<resources>

    <!-- the theme applied to the application or activity -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">#8FB01C</item>
        <!-- colorPrimaryDark is used for the status bar -->
        <item name="colorPrimaryDark">#CCE96B</item>
        <item name="colorAccent">#303A0A</item>
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">

        <!-- the theme applied to the application or activity -->
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="android:actionMenuTextColor">@color/action_bar_text_color</item>

        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
        <item name="actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="actionMenuTextColor">@color/action_bar_text_color</item>
    </style>
    <!-- ActionBar theme. -->
    <style name="ActionBarTheme" parent="AppTheme">
        <!-- when hide or show ActionBar frequently, use this attribute. -->
        <item name="windowActionBarOverlay">true</item>
    </style>

    <!-- general styles for the action bar -->
    <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="android:titleTextStyle">@style/TitleTextStyle</item>
        <item name="android:background">@drawable/actionbar_background</item>
        <item name="android:backgroundStacked">@drawable/actionbar_background</item>
        <item name="android:backgroundSplit">@drawable/actionbar_background</item>

        <!-- Support library compatibility -->
        <item name="titleTextStyle">@style/TitleTextStyle</item>
        <item name="background">@drawable/actionbar_background</item>
        <item name="backgroundStacked">@drawable/actionbar_background</item>
        <item name="backgroundSplit">@drawable/actionbar_background</item>
    </style>

    <!-- action bar title text -->
    <style name="TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">#400040</item>
    </style>

    <!-- action bar tab text -->
    <style name="TabTextStyle" parent="@style/Widget.AppCompat.ActionBar.TabText">
        <item name="android:textColor">#400040</item>
    </style>

</resources>

この活動に関する私のマニフェストは次のとおりです。

<activity
    android:name=".HomeActivity"
    android:label="@string/app_name"
    android:launchMode="singleInstance"
    android:theme="@style/ActionBarTheme"
    android:uiOptions="splitActionBarWhenNarrow" >
</activity>

しかし、奇妙なことに、に設定android:theme="@style/ActionBarTheme"するとandroid:theme="@style/Theme.Appcomat.Light"、うまく機能します。しかし、スタイルは私が望むものではありません。だから、それは私を混乱させます。だから、カスタムスタイルがうまくいかない理由を知りたいです。


さて、ActionBarTheme が次のように変更された後:

<style name="ActionBarTheme" parent="@style/Theme.AppCompat.Light">
        <item name="colorPrimary">#8FB01C</item>
        <item name="colorPrimaryDark">#CCE96B</item>
        <item name="colorAccent">#4D4DFF</item>
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="android:actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="android:actionMenuTextColor">@color/action_bar_text_color</item>
        <item name="actionBarStyle">@style/MyActionBar</item>
        <item name="actionBarTabTextStyle">@style/TabTextStyle</item>
        <item name="actionMenuTextColor">@color/action_bar_text_color</item>
        <item name="windowActionBarOverlay">true</item>
    </style>

それはうまくいきます。うん、ここ:

<style name="ActionBarTheme" parent="AppTheme">

うまくいきません。だから私は理由を知りたいです。カスタム スタイルが継承できない、開発環境に問題がある、または何か別の理由がありますか?

4

1 に答える 1

0

多分これはあなたのIDEの問題です。Eclipseを使用している場合、project--> clean、次にプロジェクトを選択するとOK、プロジェクトが再構築されます。Android Studioを使用している場合は、Build-->Rebuild ProjectまたはClean Project、結果を見てください。

于 2015-03-18T03:41:25.393 に答える