Я использую ActionBar в своем приложении. И я настроил свою собственную тему в виде панели действий, которую размещает сайт разработчика Android. К сожалению, мой стиль не работает. Каждый раз, когда мое приложение запускается, возникает исключение IllegalStateException. И деталь: «Вам нужно использовать тему Theme.AppCompat (или потомок) с этим действием.». Тогда мой пользовательский стиль здесь:Пользовательская тема ActionBar (V7) не работает
<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">
Это не работает. Поэтому я хочу знать, почему. Невозможно ли унаследовать пользовательский стиль, что-то не так с моей средой dev или что-то еще?
Хорошо, After ActionBarTheme изменяется на это: –