Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AppCompat Actionbar styling

I'm currently trying to use AppCompat instead of ActionbarSherlock. On Android 4+ devices I don't run into any problems, as the normal Actionbar and Holo theme are used.

ICS Actionbar

On lower Android versions however, this weird look happens when using Theme.AppCompat.Light.

Standard AppCompat Actionbar

The Actionbar is white and has a blue line underneath.

I was able to fix that by using the Android Action Bar Style Generator from Android Asset Studio to generate a custom theme with a solid Actionbar instead of the transparent one.

AppCompat with custom drawables from Style Generator

When comparing it to the Actionbar I got when using ActionbarSherlock, it's still kind of ugly though.

ActionbarSherlock

The AppCompat Actionbar has this very sharp, black line between itself and the content of the activity, while the stock Actionbar of ICS or the one of ActionbarSherlock have a softer transition from the Actionbar to the layout.

How can I style the Actionbar to really look like the one on Android 4+?

like image 915
Bertram Sherwood Avatar asked Oct 19 '13 09:10

Bertram Sherwood


Video Answer


2 Answers

You have to create your own style with the image you want to put on background. In your style.xml, you should create something similar to this:

values/styles.xml

    <style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="actionBarStyle">@style/ActionBarTabStyle.MyAppTheme</item>
    </style>

    <style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="background">@drawable/your_background_image</item>
    </style>

values-v14/styles.xml

    <style name="Theme.MyAppTheme" parent="@style/Theme.AppCompat.Light">
        <item name="android:actionBarStyle">@style/ActionBarTabStyle.MyAppTheme</item>
    </style>

    <style name="ActionBar.Solid.MyAppTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:background">@drawable/your_background_image</item>
    </style>

and you can use this 9-patch image :

9-patch image

like image 69
hardartcore Avatar answered Sep 19 '22 12:09

hardartcore


I use this code:

<resources>

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/ActionBarTheme</item>
</style>

<style name="ActionBarTheme" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="background">@color/red_action_bar</item>
</style>

</resources>

I hope this code is of great help.

like image 32
Cabezas Avatar answered Sep 19 '22 12:09

Cabezas