0

Я использую 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 или что-то еще?

+0

Хорошо, After ActionBarTheme изменяется на это: –

ответ

0

Возможно, это только проблема вашей среды IDE. Если вы используете Eclipse, project ->clean, а затем выберите свой проект, OK, то ваш проект будет восстановлен. Если вы используете Android Studio, то Build ->Rebuild Project или Clean Project, а затем взгляните на результат.

Смежные вопросы