web-dev-qa-db-de.com

Überlagern der Aktionsleiste funktioniert nicht

Ich habe offiziellen Entwicklerhandbuch Actionbar überlagert.

mein style.xml lautet 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 die erwartete Ausgabe ähnelt der auf dem offiziellen Leitfaden:enter image description here.

in meinem Fall lautet die Ausgabe: enter image description here

(Ich habe die Hintergrundfarbe auf Aktivität gesetzt ... aber es wird keine Aktionsleiste eingeblendet.)

Bitte helfen Sie mir, wenn irgendetwas falsch ist.

BEARBEITEN:

Ich wollte eine ähnliche Aktionsleiste wie diese in airnb und viele andere Apps. Kann mir jemand eine vollständige Antwort geben?

enter image description here

15
Krupal Shah

Ich sehe einige Missverständnisse in Ihrem Code:

  1. windowActionBarOverlay sollte in Ihrem Design angegeben werden, nicht im Stil Ihrer ActionBar.
  2. Kein Grund, eine Holo mit einem Supportthema zu verwenden. Dies bricht nur Ihre Unterstützbarkeit.

Versuche dies:

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

ich denke, Sie vermissen diesen Punkt von Entwicklerhandbuch

Überlagerungsmodus aktivieren

Nur für Android 3.0 und höher

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>

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>

Layoutoberrand festlegen

<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 beispielhafte Links. Bitte schauen Sie sich diese zur weiteren Erläuterung an.

Android Tutorial: Überlagerung mit Benutzeranweisungen

Die ActionBar auf die nächste Ebene bringen

4
Lokesh

Versuchen Sie es 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>
1
LEO

Nach zwei Stunden Suche fühle ich mich verpflichtet, diese Antwort hier hinzuzufügen.

Der Trick für mich bestand darin, alle 6 der folgenden Zeilen zu styles.xml hinzuzufügen:

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

Soweit ich alle diese Zeilen verstehe, tun sie dasselbe, aber unterschiedliche API-Ebenen überwachen nur bestimmte Zeilen. Ich sollte erwähnen, dass ich den Mindest-API-Level 19 verwende.

1
Andy Ef

Sie haben gerade vermisst, dass Sie die Überlagerung in Ihrem Anwendungsthema einrichten müssen, wie in der Dokumentation beschrieben.

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

Bitte Feedback, falls das Problem damit nicht gelöst ist;)

0
Ektos974