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:.
in meinem Fall lautet die Ausgabe:
(Ich habe die Hintergrundfarbe auf Aktivität gesetzt ... aber es wird keine Aktionsleiste eingeblendet.)
Bitte helfen Sie mir, wenn irgendetwas falsch ist.
Ich wollte eine ähnliche Aktionsleiste wie diese in airnb und viele andere Apps. Kann mir jemand eine vollständige Antwort geben?
Ich sehe einige Missverständnisse in Ihrem Code:
windowActionBarOverlay
sollte in Ihrem Design angegeben werden, nicht im Stil Ihrer ActionBar
.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>
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.
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>
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.
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;)