J’utilise la bibliothèque de AppCompat-v7:21.0.0
charge AppCompat-v7:21.0.0
pour Android 5.0 Lollipop dans 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 fichier values/styles.xml
apparaît en noir, à la fois dans l’aperçu de la présentation XML et dans l’émulateur.
Alors, qu’est-ce qui ne va pas? Est-ce que je manque quelque chose? S’il vous plaît, faites-moi savoir. Merci.
EDIT: Je suis conscient du fait qu’il est impossible de changer la couleur de la barre d’état sur les versions Pre-Lollipop. Mon aperçu XML Layout Editor et mon émulateur sont tous deux définis sur API Level 21 (5.0 Lollipop). Mais, la barre d’état n’est toujours pas de la couleur que j’ai définie dans colorPrimaryDark
. J’ai essayé de faire statusBarColor
dans styles.xml
mais en vain. C’est toujours noir.
AUSSI: J’ai vu une des réponses sur une question similaire où ils m’ont conseillé de mettre ma minSdkVersion
à 21. J’ai essayé, mais ça n’a pas fonctionné. Et je veux que mon application s’exécute sur les 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 )
Dans le cas où vous ne savez pas comment append 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 du SDK cible sur 21? J’ai eu le même problème lorsque j’ai laissé la version du SDK cible à 19. Vous pouvez laisser le min SDK à un niveau inférieur.
Et bien sûr, vous devez hériter du thème approprié et vous assurer que votre activité l’utilise.
Vérifiez si vous éditez le styles.xml
dans le dossier values-v21
. Si vous définissez la version de SDK sur 21, elle ne cherchera pas les styles.xml
dans le dossier de values
(mais cela devrait être le cas).
test sur mon nexus7 5.1.1
set in style.xml v21 / v22 n’est pas fonctionnel
- true
- @android:color/holo_red_dark
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
La modification de la couleur de la barre d’état dans Pre-Lollipop (5.0) n’est pas possible en définissant colorPrimaryDark. Voir cet article .
Sur les anciennes plates-formes, AppCompat émule le thème de la couleur dans la mesure du possible. Pour le moment, cela se limite à la coloration de la barre d’action et de 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 les values/style.xml
avec colorPrimaryDark
:
- @android:color/transparent
Enlever cela a fonctionné pour moi.
Dans mon cas, le coupable était la bibliothèque jfeinstein10/SlidingMenu
. J’ai remplacé la bibliothèque par le Android navigation drawer
et affiche maintenant la couleur de la barre d’état correctement.
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!
À propos de l’heure … Quoi qu’il en soit, assurez-vous que votre bibliothèque appcompat
est mise à jour vers la dernière version, à savoir v22.0. +.
À votre santé!
Je travaillais sur une ancienne application et essayais de la convertir en style matériel. Le code et tout allait bien, mais la seule erreur qui empêchait la teinte de la barre d’état sur> = les périphériques Lollipop était “TargetSDKVersion” dans build.gradle . Il a été réglé à moins de 21. Je l’ai changé à 21 et la teinte de la barre d’état a commencé à fonctionner.
Cela a fonctionné pour moi. Suppression de la couleur de la barre d’état des styles. Ajouter un drapeau puis mettre la couleur que vous voulez ainsi
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)); }