Je suivais guide officiel du développeur pour superposer l'actionbar.
mon style.xml
est comme suit:
<!-- 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>
Mon midSdkVersion a 14 ans et le résultat attendu est similaire à celui du guide officiel:.
au lieu de cela, dans mon cas, la sortie est:
(J'ai défini la couleur d'arrière-plan sur activité ... mais cela ne superpose pas la barre d'action.)
S'il vous plaît, aidez-moi si quelque chose que je fais est faux.
Je voulais une barre d'action similaire comme celle-ci dans airnb et dans de nombreuses autres applications. Quelqu'un peut-il me donner une réponse complète à ce sujet?
Je vois des malentendus dans votre code:
windowActionBarOverlay
devrait être spécifié sur votre thème et non sur le style de votre ActionBar
.Holo
avec un thème de support. Cela casse juste votre supportabilité.Essaye ça:
<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>
je pense que vous manquez ce point guide du développeur
Activer le mode de superposition
Pour Android 3.0 et supérieur seulement
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>
Pour Android 2.1 et supérieur
<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>
Spécifier la mise en page marge supérieure
<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>
et j'ai deux exemples de liens S'il vous plaît jeter un oeil sur eux pour plus de précisions.
Tutoriel Android: Superposition avec des instructions d'utilisation
Essayez ceci à la place:
<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>
Après deux heures de recherche, je me sens obligé d’ajouter cette réponse ici.
L'astuce pour moi a été d'ajouter les 6 lignes suivantes à 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>
Autant que je sache, toutes ces lignes font la même chose, mais différents niveaux d'API n'écoutent que certaines lignes. Je dois mentionner que j'utilise le niveau minimum d'API 19.
Vous venez juste de manquer la configuration de la superposition dans le thème de votre application, comme indiqué dans documention
<!-- the theme applied to the application or activity -->
Merci de faire un retour si le problème n'est pas résolu avec ça;)