web-dev-qa-db-fra.com

Android 4.4 style de barres d'état et de navigation translucides sur Android 5.0

Sur Android 4.4 KitKat, vous pouvez définir les barres d'état et de navigation transparentes avec le Android:windowTranslucentStatus et Android:windowTranslucentNavigation éléments de thème, puis sous les barres, la fenêtre de l'application est étendue et un dégradé est ajouté. Cependant sur Android 5.0 Lollipop cela a été changé et maintenant au lieu du dégradé une couleur transparente solide est ajoutée. Android 5.0 offre le nouveau Android:statusBarColor et Android:navigationBarColor éléments sous le nouveau thème Matériau, mais lorsque vous essayez de définir ces éléments sur @Android:color/transparent la fenêtre de l'application n'est pas étendue et si vous utilisez Android:windowTranslucentStatus et Android:windowTranslucentNavigation puis Android:statusBarColor et Android:navigationBarColor sont ignorés.

Suis-je en train de manquer quelque chose décrit sur http://developer.Android.com/training/material/theme.html#StatusBar ?

enter image description here

37
AxeEffect

Ensemble Android:windowTranslucentStatus à faux et définissez Android:statusBarColor à @Android:color/transparent.

Ajoutez ensuite le code ci-dessous:

getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

Si vous souhaitez également que la barre de navigation soit translucide, définissez Android:navigationBarColor à @Android:color/transparent et combinez le drapeau View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION ainsi que.

Je n'ai pas expérimenté sur la barre de navigation mais cela fonctionnera.

64
suckgamony

Ajoutez la ligne ci-dessous à votre style:

<item name="Android:windowTranslucentStatus">true</item>
<item name="Android:windowTranslucentNavigation">true</item>
7
Kuldeep Sakhiya

Pour clarifier @ réponse de suckgamony à cette question:

  • Sous Lollipop et au-dessus, définissant Android:statusBarColor ou Android:navigationBarColor à @Android:color/transparent rendra la barre d'état ou la barre de navigation (respectivement) complètement transparent, sauf:
  • Android:windowTranslucentStatus ou Android:windowTranslucentNavigation est défini sur true, auquel cas la barre d'état ou la barre de navigation (respectivement) est défini sur la couleur transparente transparente décrite par @AxeEffect (encore une fois, sous Lollipop et ci-dessus);
  • Android:statusBarColor et Android:navigationBarColor ne peut être utilisé qu'avec Android version 21 (Lollipop 5.0) ou supérieure. Comme décrit dans la réponse à laquelle il est fait référence , Android:windowTranslucentStatus ou Android:windowTranslucentNavigation lorsqu'il est utilisé avec KitKat fournit des dégradés transparents plutôt qu'une transparence totale.
3
CODE-REaD