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.
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);
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));
}
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.
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
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).
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.
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.
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é!
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));
}
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.
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.