web-dev-qa-db-fra.com

La superposition de la barre d’action ne fonctionne pas

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:enter image description here.

au lieu de cela, dans mon cas, la sortie est: enter image description here

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

MODIFIER:

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?

enter image description here

15
Krupal Shah

Je vois des malentendus dans votre code:

  1. windowActionBarOverlay devrait être spécifié sur votre thème et non sur le style de votre ActionBar.
  2. Aucune raison d'utiliser 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>
34
Simas

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

Pousser la barre d’action au prochain niveau

4
Lokesh

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

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.

1
Andy Ef

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

0
Ektos974