web-dev-qa-db-fra.com

Profitant de la barre d'état translucide dans Android 4.4 KitKat

Lorsque j'ai publié mon application de prise de notes pour Android 4.0 - 4.3, j'ai utilisé une couleur de barre d'action personnalisée avec une icône de barre d'action personnalisée (au lieu d'utiliser les barres d'action claires et sombres standard). J'aimerais pour le rendre ainsi Android 4.4, la barre d'état prendra également la couleur personnalisée que j'utilise dans ma barre d'action (qui est # FFD060). Existe-t-il un moyen de modifier facilement mon courant styles.xml pour permettre à 4.4 d'en profiter?

Mon styles.xml sous mon dossier values-v19 est le suivant:

<resources>

<style name="AppBaseTheme" parent="@Android:style/Theme.Holo.Light">
   <item name="Android:actionBarStyle">@style/MyActionBarTheme</item>
</style>

 <style name="MyActionBarTheme" parent="@Android:style/Widget.Holo.Light.ActionBar">
     <item name="Android:background">#ffd060</item>
     <item name="Android:textColor">#fff</item>   
     <item name="Android:icon">@drawable/action</item>
     <item name="Android:titleTextStyle">@style/MyTextAppearance</item>
 </style>

 <style name="MyTextAppearance" parent="Android:TextAppearance.Holo.Widget.ActionBar.Title">
     <item name="Android:icon">@drawable/action</item>
     <item name="Android:textColor">#ffffff</item>
 </style>
</resources>

J'ai essayé de mettre en œuvre:

 <item name="Android:windowTranslucentStatus">true</item>

Cela fait remonter le contenu de mon application, commence dans la zone de la barre d'état et est couvert par la barre d'action.

Without the translucent code

22
Amonstan

Mise à jour: Trouvé cet excellent article de Matt Gaunt (un employé de Google) sur l'ajout d'un thème translucide à Android. Il est très complet et résout certains des problèmes que beaucoup de gens semblent rencontrer lors de la mise en œuvre de ce style: Thème translucide dans Android

Ajoutez simplement ce qui suit à votre style personnalisé. Cela empêche le déplacement du contenu derrière l'ActionBar et vers le haut de la fenêtre, mais pas sûr du bas de l'écran.

<item name="Android:fitsSystemWindows">true</item>

Crédit: Interface utilisateur du système de barre d'état transparente sur Kit-Kat

15
thunsaker

Il semble que tout ce que vous devez faire est d'ajouter cet élément aux thèmes sur lesquels vous souhaitez une barre d'état translucide:

<item name="Android:windowTranslucentStatus">true</item>
2
hichris123

Ajoutez ces lignes dans votre thème principal

<style name="AppTheme" parent="Android:Theme.Holo.Light">
    <item name="Android:windowTranslucentStatus">true</item>
    <item name="Android:windowTranslucentNavigation">true</item>
    <item name="Android:fitsSystemWindows">true</item>
</style>
2
Muhammad Aamir Ali

Pour changer la couleur de la barre d'état en windowBackground

 <item name="Android:windowBackground">@color/window_bg</item>

Pour ajouter l'effet translucide à la barre d'état et de navigation

<item name="Android:windowTranslucentStatus">true</item>

<item name="Android:windowTranslucentNavigation">true</item>
0
Ravi Rawal

Vous êtes très proche, il vous suffit de mettre à jour les couleurs d'arrière-plan de votre vue:

<FrameLayout 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:background="#ffd060" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:background="@Android:color/background_light"

        <!-- your stuff here -->
    </LinearLayout>
</FrameLayout>

La spécification d'une couleur d'arrière-plan globale dans votre AppBaseTheme fonctionnerait également mais causerait probablement un gâchis car elle finirait par être la couleur d'arrière-plan par défaut pour tout.

0
Paito