Search code examples
androidandroid-actionbarandroid-styles

Is is possible completely custom default ActionBar style?


In my activity, I use default ActionBar

<style name="AppTheme" parent="Theme.AppCompat"> and getSupportActionBar()

How can I custom the style of this ActionBar?

  1. Change ActionBar color and title color
  2. Align title to center
  3. Add more top padding to ActionBar

For the color, I tried these two style, but it also change color of whole Activity, I just want to change ActionBar

<item name="colorPrimary"></item>
<item name="android:textColorPrimary"></item>

I alo tried actionBarStyle, but it is not working

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/darkgray</item>
    <item name="colorPrimaryDark">@color/black</item>
    <item name="colorAccent">@color/gold</item>
    <item name="android:textColorPrimary">@color/gold</item>
    <item name="android:textColorSecondary">@color/darkgray</item>
    <item name="android:windowBackground">@color/black</item>
    <item name="android:colorBackground">@color/black</item>
    <item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@color/gray</item>
    <item name="android:textColor">@color/black</item>
</style>

Solution

  • I suggest you to include the Toolbar in your layout and use the Theme.AppCompat.NoActionBar theme for your Activity :

    Layout :

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/yourColor">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="@color/yourColor"
            android:text="yourTitle" />
    
    </android.support.v7.widget.Toolbar>
    

    Manifest :

    <activity
        android:name="yourActivity"
        android:theme="@style/Theme.AppCompat.NoActionBar" />