Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Overlaying the Action Bar not working

I was following official developer's guide to overlay actionbar.

my style.xml is as following:

<!-- Base application theme. -->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
</style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="actionBarStyle">@style/CustomActionBarTheme</item>

</style>

<style name="CustomActionBarTheme"
    parent="@android:style/Theme.Holo">
    <item name="android:windowActionBarOverlay">true</item>
</style>

My midSdkVersion is 14 and expected output is similar to that on official guide:enter image description here.

instead, in my case the output is: enter image description here

(I have set background color to activity...but it isn't overlaying action bar.)

Please help me if anything I'm doing is wrong.

EDIT:

I wanted similar action bar like this in airnb and many other apps. Can anyone give me complete answer for this?

enter image description here

like image 579
Krupal Shah Avatar asked Jan 18 '15 07:01

Krupal Shah


4 Answers

I see some misunderstandings in your code:

  1. windowActionBarOverlay should be specified on your theme not on your ActionBar's style.
  2. No reason to use a Holo with a support theme. This just breaks your supportability.

Try this:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>
    <!--For compatibility-->
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="windowActionBarOverlay">true</item>
</style>

<color name="transparent_black">#80000000</color>
<style name="MyActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="android:background">@color/transparent_black</item>
    <!--For compatibility-->
    <item name="background">@color/transparent_black</item>
</style>
like image 70
Simas Avatar answered Sep 27 '22 21:09

Simas


i think you miss this point of developer guide

Enable Overlay Mode

For Android 3.0 and higher only

style.xml

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
    </style>
</resources>

For Android 2.1 and higher

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

Specify Layout Top-margin

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?android:attr/actionBarSize">
    ...
</RelativeLayout>

and I have two example links Please have a Look on them for more clarification.

Android Tutorial: Overlay with User Instructions

Pushing the ActionBar to the Next Level

like image 32
Lokesh Avatar answered Sep 27 '22 21:09

Lokesh


Try this instead:

<style name="AppBaseTheme" parent="android:style/Theme.Holo.Light.DarkActionBar">
</style>

<style name="OverlayActionBarTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:actionBarStyle">@style/Holo.ActionBar.Overlay</item>
</style>

<style
    name="Holo.ActionBar.Overlay"
    parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
    <item name="android:background">#80000000</item>
</style>
like image 34
LEO Avatar answered Sep 27 '22 21:09

LEO


After searching for two hours I feel obliedged to add this answer here.

What did the trick for me was to add all 6 of the following lines to styles.xml:

    <item name="android:windowActionModeOverlay">true</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowActionBar">true</item>

    <item name="windowActionModeOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="windowActionBar">true</item>

As far as I understand all those lines do the same thing, but different API levels only listen for certain lines. I should mention that I use minimum API level 19.

like image 39
Andy Ef Avatar answered Sep 27 '22 22:09

Andy Ef