web-dev-qa-db-fra.com

Couleur de la barre d'état non affichée - 5.0 Lollipop Android Studio: (AppCompat-v7: r21)

J'utilise le AppCompat-v7:21.0.0 bibliothèque de support pour Android 5.0 Lollipop in Android Studio. Mon problème est que la couleur de la barre d'état qui peut être modifiée en définissant colorPrimaryDark dans le values/styles.xml, apparaît en noir, à la fois dans l'aperçu de la disposition xml et dans l'émulateur.

Alors, qu'est-ce qui ne va pas? Suis-je en train de manquer quelque chose? S'il vous plaît, faites-moi savoir. Merci.

EDIT: Je suis conscient du fait qu'il n'est pas possible de changer la couleur de la barre d'état sur les versions Pre-Lollipop. Mon aperçu de l'éditeur de mise en page XML et mon émulateur sont tous deux définis sur le niveau API 21 (5.0 Lollipop). Mais, la barre d'état n'est toujours pas de la couleur dans laquelle je l'ai définie dans colorPrimaryDark. J'ai essayé de faire statusBarColor dans styles.xml mais en vain. Il est toujours noir.

AUSSI: J'ai vu une des réponses à une question similaire où ils m'ont conseillé de mettre mon minSdkVersion à 21. J'ai essayé cela, mais il n'a pas fonctionné. Et je veux que mon application s'exécute sur des appareils avec API niveau 15 et supérieur.

40
Adifyr

Veuillez lire ceci: Pour que cela prenne effet, la fenêtre doit dessiner les arrière-plans de la barre système avec

Android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS

mais

Android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS

ne doit pas être défini ( Source )

Si vous ne savez pas comment ajouter ce drapeau:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
35
Wayne

Cela a fonctionné pour moi:

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(getResources().getColor(R.color.some_color));
    }
35
Philipp E.

Avez-vous défini la version cible du SDK sur 21? J'ai eu le même problème lorsque j'ai laissé la version cible du SDK à 19. Vous pouvez laisser le SDK min à quelque chose de plus bas.

Et bien sûr, vous devez hériter du thème approprié et vous assurer que votre activité l'utilise.

12
BladeCoder

tester sur mon nexus7 5.1.1

défini dans style.xml v21/v22 ne fonctionne pas

<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@Android:color/holo_red_dark</item>

mais

mis en activité

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(getResources().getColor(Android.R.color.holo_red_dark));
}

c'est du travail pour moi

6
Tryagain Tsai

Vérifiez si vous modifiez styles.xml dans values-v21 dossier. Si vous définissez la version du SDK sur 21, il ne recherchera pas styles.xml dans le dossier values (mais il devrait le faire).

enter image description here

6
gkiko

La modification de la couleur de la barre d'état dans la version antérieure à Lollipop (5.0) n'est pas possible en définissant colorPrimaryDark. Voir cet article .

Sur les anciennes plates-formes, AppCompat émule le thème des couleurs lorsque cela est possible. Pour le moment, cela se limite à colorier la barre d'action et certains widgets.

3
Patrick

Dans mon cas values-v21/styles.xml contenait la ligne suivante qui remplaçait la couleur de la barre d'état définie dans values/style.xml avec colorPrimaryDark:

<item name="Android:statusBarColor">@Android:color/transparent</item>

Supprimer cela a fonctionné pour moi.

1
mehulmpt

Dans v22-appcompat ils (Android) ont maintenant ajouté le rendu de la couleur de la barre d'état dans l'aperçu du studio Android!

Il est temps ... Quoi qu'il en soit, assurez-vous que votre bibliothèque appcompat est mise à jour vers la dernière version, qui est la v22.0. +.

À votre santé!

0
Adifyr

Cela a fonctionné pour moi. Suppression de la couleur de la barre d'état des styles. Ajoutez un drapeau, puis mettez la couleur que vous souhaitez

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().setStatusBarColor(getResources().getColor(R.color.your_color));
}
0
Mwongera808

Je travaillais sur une ancienne application et j'essayais de la convertir en style matériel. Le code et tout allait bien, mais la seule erreur que j'ai eue qui gênait la coloration de la barre d'état> = Les appareils Lollipop était "TargetSDKVersion" in build.gradle. Il était inférieur à 21. Je l'ai changé en 21 et la coloration de la barre d'état a commencé à fonctionner.

0
Umer Farooq

Dans mon cas, le coupable était jfeinstein10/SlidingMenu bibliothèque. J'ai remplacé la bibliothèque par Android navigation drawer et maintenant il affiche correctement la couleur de la barre d'état.

0
Starrover