2015-01-18 9 views
15

Ich folgte , um Actionbar zu überlagern.Überlagern der Aktionsleiste funktioniert nicht

mein style.xml ist wie folgt:

<!-- 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> 

Meine midSdkVersion ist 14 und erwartete Ausgabe ist ähnlich wie auf offiziellen Führer: enter image description here.

statt, in meinem Fall ist die Ausgabe: enter image description here

(. Ich habe Hintergrundfarbe auf Aktivität eingestellt ... aber es ist nicht Aktionsleiste Übereinanderlegen)

Bitte mir helfen, wenn alles, was ich‘ m tun ist falsch.

EDIT:

Ich wollte ähnliche Aktionsleiste wie dies in airnb und vielen anderen Anwendungen. Kann mir jemand dafür eine vollständige Antwort geben?

enter image description here

+0

Bitte überprüfen Sie Ihre Manifest-Datei. Sie könnten falsches Thema anstelle von CustomActionBarTheme verwenden. –

+0

@iDroidExplorer können Sie eine vollständige Antwort mit Code schreiben? Ich werde es schätzen. Vielen Dank. –

+0

Sie legen die zu überlagernde Aktionsleiste fest, aber Sie haben den Hintergrund der Aktionsleiste nicht transparent gemacht. versuche, ' @ drawbar/actionbar_background' mit '@ drawable/actionbar_background' hinzuzufügen ist ein halbtransparentes png image – am05mhz

Antwort

33

Ich sehe einige Missverständnisse in Ihrem Code:

  1. windowActionBarOverlay sollte auf Ihrem Thema nicht auf Ihrem ActionBar ‚s-Art angegeben werden.
  2. Kein Grund, eine Holo mit einem Support-Thema zu verwenden. Dies bricht nur Ihre Unterstützbarkeit.

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> 
+1

Ich bin nicht einverstanden mit Ihrem ersten Punkt. weil es klar, dass Thema sollte Stil deklariert werden erwähnen ist, und Sie können es wie unten verwenden: https://developer.android.com/guide/topics/ui/themes.html#ApplyATheme –

+0

Ich habe Ihre Lösung verwendet und es funktioniert fein. Aber Titel von 'ActionBar' ist weg. Kannst du damit helfen? –

+0

das ist einfach perfekt! –

1

Versuchen Sie stattdessen:

<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> 
4

Ich glaube, Sie diesen Punkt von developer guide

aktivieren Overlay-Modus

für Android 3.0 und höher

Stil verpassen .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> 

Für Android 2.1 und höher

<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> 

Geben Layout-Top-Marge

<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> 

und ich habe zwei Beispiel Links haben Sie bitte einen Blick auf sie für mehr Klarheit .

Android Tutorial: Overlay with User Instructions

Pushing the ActionBar to the Next Level

+1

Perfekt, wenn jemand Sliding Tabs verwendet und die ActionBar beim Scrollen anzeigen und ausblenden möchte, ist der Schlüssel hier 'android: paddingTop ="? Android: attr/actionBarSize "' – Skynet

-1

ich völlig benutzerdefinierte Ansichten, so würde die Aktivität Layout alle füllen den Bildschirm und an der Spitze individuelle Linearlayout setzen mit allen Tasten und Symbole aufgeblasen nur

0

Sie verpasst, dass Sie die Überlagerung in Ihrem Anwendungsthema einrichten müssen, wie in der

<!-- the theme applied to the application or activity --> 
angegeben

Bitte Feedback geben, wenn das Problem damit nicht gelöst wird;)

Verwandte Themen