Search code examples
androidactionbarsherlockandroid-actionbarandroid-holo-everywhere

ActionBar has correct colors in Android 4.2, wrong colors in Android 2.3


I'm using ActionBarSherlock and HoloEverywhere in my app. I used the ActionBar Style Generator to generate my styles and then modified them a bit by hand for text colors, etc.

I'm having a problem where my ActionBar looks correct on my Android 4.2 device (that is, orange with white text), but on my Android 2.3 device the ActionBar is black with grey text.

Does anyone know what might cause this?

enter image description here

<style name="Theme.MyApp" parent="@style/Holo.Theme.Light.DarkActionBar">
    <item name="android:actionBarItemBackground">@drawable/selectable_background_MyApp</item>
    <item name="android:popupMenuStyle">@style/PopupMenu.MyApp</item>
    <item name="android:dropDownListViewStyle">@style/DropDownListView.MyApp</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.MyApp</item>
    <item name="android:actionDropDownStyle">@style/DropDownNav.MyApp</item>
    <item name="android:actionBarStyle">@style/ActionBar.Solid.MyApp</item>
    <item name="android:actionModeBackground">@drawable/cab_background_top_MyApp</item>
    <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_MyApp</item>
    <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.MyApp</item>
    <!-- <item name="android:textColorPrimary">#FFFFFF</item> -->
    <item name="android:spinnerDropDownItemStyle">@style/ActionBar.Solid.MyApp.NavigationDropDownStyle</item>

</style>

<style name="ActionBar.Solid.MyApp" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/ab_solid_MyApp</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_MyApp</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_MyApp</item>
    <item name="android:progressBarStyle">@style/ProgressBar.MyApp</item>
    <item name="android:titleTextStyle">@style/ActionBar.Solid.MyApp.TitleTextStyle</item>

</style>

<style name="ActionBar.Solid.MyApp.NavigationDropDownStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
    <item name="android:textAppearance">@style/ActionBar.Solid.MyApp.NavigationDropDownStyle.TextStyle</item>
</style>

<style name="ActionBar.Solid.MyApp.NavigationDropDownStyle.TextStyle" parent="@android:style/Widget">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">18sp</item>
</style>

<style name="ActionBar.Solid.MyApp.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">18sp</item>
    <!-- <item name="android:fontFamily">sans-serif-medium</item> -->
</style>

<style name="ActionBar.Transparent.MyApp" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">@drawable/ab_transparent_MyApp</item>
    <item name="android:progressBarStyle">@style/ProgressBar.MyApp</item>
</style>

<style name="PopupMenu.MyApp" parent="@android:style/Widget.Holo.ListPopupWindow">
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_MyApp</item> 
</style>

<style name="DropDownListView.MyApp" parent="@android:style/Widget.Holo.ListView.DropDown">
    <item name="android:listSelector">@drawable/selectable_background_MyApp</item>
</style>

<style name="ActionBarTabStyle.MyApp" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_ab_MyApp</item>
</style>

<style name="DropDownNav.MyApp" parent="@android:style/Widget.Holo.Spinner">
    <item name="android:background">@drawable/spinner_background_ab_MyApp</item>
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_MyApp</item>
    <item name="android:dropDownSelector">@drawable/selectable_background_MyApp</item>
</style>

<style name="ProgressBar.MyApp" parent="@android:style/Widget.Holo.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/progress_horizontal_MyApp</item>
</style>

<style name="ActionButton.CloseMode.MyApp" parent="@android:style/Widget.Holo.ActionButton.CloseMode">
    <item name="android:background">@drawable/btn_cab_done_MyApp</item>
</style>

<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="Theme.MyApp.Widget" parent="@android:style/Theme.Holo">
    <item name="android:popupMenuStyle">@style/PopupMenu.MyApp</item>
    <item name="android:dropDownListViewStyle">@style/DropDownListView.MyApp</item>
</style>

--------------- EDIT ----------------------

enter image description here

So I'm now having a problem where the action bar is taking up the entire screen on the Android 2.3 device (but works fine on Android 4.2). Do I need to remove the "android:" from the parent attributes?

parent="@android:style/Widget.Holo.ListPopupWindow"

When I tried this, Eclipse was unable to find the theme.

 <resources xmlns:android="http://schemas.android.com/apk/res/android">

 <style name="Theme.MyApp" parent="@style/Holo.Theme.Light.DarkActionBar">
    <item name="android:actionBarItemBackground">@drawable/selectable_background_MyApp</item>
    <item name="android:popupMenuStyle">@style/PopupMenu.MyApp</item>
    <item name="android:dropDownListViewStyle">@style/DropDownListView.MyApp</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.MyApp</item>
    <item name="android:actionDropDownStyle">@style/DropDownNav.MyApp</item>
    <item name="android:actionBarStyle">@style/ActionBar.Solid.MyApp</item>
    <item name="android:actionModeBackground">@drawable/cab_background_top_MyApp</item>
    <item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_MyApp</item>
    <item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.MyApp</item>
    <!-- <item name="android:textColorPrimary">#FFFFFF</item> -->
    <item name="android:spinnerDropDownItemStyle">@style/ActionBar.Solid.MyApp.NavigationDropDownStyle</item>

    <item name="actionBarItemBackground">@drawable/selectable_background_MyApp</item>
    <item name="popupMenuStyle">@style/PopupMenu.MyApp</item>
    <item name="dropDownListViewStyle">@style/DropDownListView.MyApp</item>
    <item name="actionBarTabStyle">@style/ActionBarTabStyle.MyApp</item>
    <item name="actionDropDownStyle">@style/DropDownNav.MyApp</item>
    <item name="actionBarStyle">@style/ActionBar.Solid.MyApp</item>
    <item name="actionModeBackground">@drawable/cab_background_top_MyApp</item>
    <item name="actionModeSplitBackground">@drawable/cab_background_bottom_MyApp</item>
    <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.MyApp</item>
    <!-- <item name="textColorPrimary">#FFFFFF</item> -->
    <item name="spinnerDropDownItemStyle">@style/ActionBar.Solid.MyApp.NavigationDropDownStyle</item>

</style>

<style name="ActionBar.Solid.MyApp" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/ab_solid_MyApp</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_MyApp</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_MyApp</item>
    <item name="android:progressBarStyle">@style/ProgressBar.MyApp</item>
    <item name="android:titleTextStyle">@style/ActionBar.Solid.MyApp.TitleTextStyle</item>

    <item name="background">@drawable/ab_solid_MyApp</item>
    <item name="backgroundStacked">@drawable/ab_stacked_solid_MyApp</item>
    <item name="backgroundSplit">@drawable/ab_bottom_solid_MyApp</item>
    <item name="progressBarStyle">@style/ProgressBar.MyApp</item>
    <item name="titleTextStyle">@style/ActionBar.Solid.MyApp.TitleTextStyle</item>

</style>

<style name="ActionBar.Solid.MyApp.NavigationDropDownStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
    <item name="android:textAppearance">@style/ActionBar.Solid.MyApp.NavigationDropDownStyle.TextStyle</item>

</style>

<style name="ActionBar.Solid.MyApp.NavigationDropDownStyle.TextStyle" parent="@android:style/Widget">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">18sp</item>

</style>

<style name="ActionBar.Solid.MyApp.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">18sp</item>

    <!-- <item name="android:fontFamily">sans-serif-medium</item> -->
</style>

<style name="ActionBar.Transparent.MyApp" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">@drawable/ab_transparent_MyApp</item>
    <item name="android:progressBarStyle">@style/ProgressBar.MyApp</item>

    <item name="background">@drawable/ab_transparent_MyApp</item>
    <item name="progressBarStyle">@style/ProgressBar.MyApp</item>
</style>

<style name="PopupMenu.MyApp" parent="@android:style/Widget.Holo.ListPopupWindow">
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_MyApp</item> 

</style>

<style name="DropDownListView.MyApp" parent="@android:style/Widget.Holo.ListView.DropDown">
    <item name="android:listSelector">@drawable/selectable_background_MyApp</item>

</style>

<style name="ActionBarTabStyle.MyApp" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_ab_MyApp</item>

    <item name="background">@drawable/tab_indicator_ab_MyApp</item>
</style>

<style name="DropDownNav.MyApp" parent="@android:style/Widget.Holo.Spinner">
    <item name="android:background">@drawable/spinner_background_ab_MyApp</item>
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_MyApp</item>
    <item name="android:dropDownSelector">@drawable/selectable_background_MyApp</item>

    <item name="background">@drawable/spinner_background_ab_MyApp</item>
</style>

<style name="ProgressBar.MyApp" parent="@android:style/Widget.Holo.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/progress_horizontal_MyApp</item>

</style>

<style name="ActionButton.CloseMode.MyApp" parent="@android:style/Widget.Holo.ActionButton.CloseMode">
    <item name="android:background">@drawable/btn_cab_done_MyApp</item>

    <item name="background">@drawable/btn_cab_done_MyApp</item>
</style>

</resources>

Solution

  • As per the official docs, you need to also declare the attributes without the android: namespace. In your case, those attributes are only getting applied to the native implementation.