Tout d'abord, ce n'est pas un doublon comme dans Comment changer la couleur d'arrière-plan de la barre d'état Android
Comment changer la couleur de la barre d'état qui devrait être la même que dans la barre de navigation.
Je veux que la couleur de la barre d'état soit la même que la couleur de la barre de navigation
android:statusBarColor
. Vous pouvez simplement l'ajouter àvalues-v21/styles.xml
.Réponses:
Android 5.0 Lollipop a introduit le thème Material Design qui colore automatiquement la barre d'état en fonction de la
colorPrimaryDark
valeur du thème.Ceci est pris en charge sur la pré-sucette de l'appareil grâce à la bibliothèque support-v7-appcompat à partir de la version 21. Blogpost sur le support appcompat v21 de Chris Banes
En savoir plus sur le thème Material sur le site officiel des développeurs Android
la source
Mise à jour:
Sucette:
Ajouté au niveau 21 de l'API
Android Lollipop a apporté la possibilité de changer la couleur de la barre d'état dans votre application pour une expérience utilisateur plus immersive et en harmonie avec celle de Google
Material Design Guidelines
.Voici comment modifier la couleur de la barre d'état à l'aide de la nouvelle
window.setStatusBarColor
méthode introduite dansAPI level 21
.Changer la couleur de la barre d'état nécessite également de définir deux drapeaux supplémentaires sur la fenêtre; vous devez ajouter le
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
drapeau et effacer leFLAG_TRANSLUCENT_STATUS
drapeau.Code de travail:
...
Référence développeur officielle: setStatusBarColor (int)
Exemple: matière-conception-partout
Chris Banes Blog- appcompat v21: conception de matériel pour les appareils pré-Lollipop!
L'
transitionName
arrière-plan de la vue seraandroid:status:background
.la source
android:statusBarColor
votrevalues-v21/styles.xml
fichier sur androiddocs.com/training/material/theme.html comme ceci<item name="android:statusBarColor">@color/primary_color</item>
Placez ceci est votre values-v21 / styles.xml, pour l'activer sur Lollipop:
la source
targeApi
attribut si vous souhaitez conserver un fichier de style unique. Lisez ma réponse pour référence stackoverflow.com/a/48565459/4291272c'est un moyen très facile de le faire sans aucune bibliothèque: si la version du système d'exploitation n'est pas prise en charge - sous kitkat - alors rien ne se passe. je fais ces étapes:
alors j'ai fait cette méthode:
vous avez également besoin de ces deux méthodes pour obtenir la barre d'action et la hauteur de la barre d'état:
alors la seule chose dont vous avez besoin est cette ligne pour définir la couleur de la barre d'état:
la source
Comme @Niels l'a dit, vous devez placer dans values-v21 / styles.xml:
Mais ajoutez
tools:targetApi="lollipop"
si vous voulez un seul style.xml, comme:la source
Eh bien, la solution Izhar était OK mais, personnellement, j'essaye d'éviter du code qui ressemble à ceci:
De plus, je n'aime pas non plus dupliquer le code. Dans votre réponse, je dois ajouter une telle ligne de code dans toutes les activités:
J'ai donc pris la solution Izhar et utilisé XML pour obtenir le même résultat: créer une mise en page pour StatusBar status_bar.xml
Remarquez les attributs de hauteur et d'élévation, ceux-ci seront définis dans les valeurs, valeurs-v19, valeurs-v21 plus bas.
Ajoutez cette disposition à la disposition de vos activités à l'aide de include, main_activity.xml:
Pour la barre d'outils, ajoutez l'attribut de marge supérieure:
Dans votre appTheme style-v19.xml et styles-v21.xml, ajoutez la fenêtreTranslucent attr:
styles-v19.xml, v21:
Et enfin, sur vos dimens, dimens-v19, dimens-v21, ajoutez les valeurs de la barre d'outils topMargin et la hauteur de statusBarHeight: dimens.xml pour moins que KitKat:
La hauteur de la barre d'état est toujours 24dp dimens-v19.xml pour KitKat et au-dessus:
dimens-v21.xml pour Lolipop, ajoutez simplement l'élévation si nécessaire:
Voici le résultat pour Jellybean KitKat et Lollipop:
la source
Vous pouvez utiliser ce code simple:
One-liner à Kotlin:
Réponse originale avec Java et vérification de version manuelle:
la source
ContextCompat
. A Kotlin c'est alors juste ça:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Créez simplement un nouveau thème dans res / values / styles.xml où vous modifiez le "colorPrimaryDark" qui est la couleur de la barre d'état:
Et modifiez le thème d'activité dans AndroidManifest.xml en celui que vous voulez, lors de l'activité suivante, vous pouvez changer la couleur pour revenir à celle d'origine en sélectionnant le thème d'origine:
Voici à quoi devrait ressembler votre res / values / colours.xml :
la source
Pour changer la couleur de la sucette ci-dessus, ajoutez-la simplement à votre styles.xml
mais rappelez - vous , si vous voulez avoir une couleur claire pour la barre d'état, ajoutez aussi cette ligne
la source
Vous pouvez changer la couleur de la barre d'état avec cette fonction. fonctionne sur android L signifie API 21 et supérieur et nécessite une chaîne de couleur telle que
"#ffffff"
.la source
J'avais cette exigence: changer la couleur de la barre d'état par programmation en la maintenant transparente , pour permettre au tiroir de navigation de se dessiner en chevauchant la barre d'état transparente.
Je ne peux pas faire ça en utilisant l'API
Si vous cochez ici dans le débordement de pile, tout le monde avant cette ligne de code définissez la transparence de la barre d'état sur solide avec
Je suis capable de gérer la couleur et la transparence de la barre d'état comme ceci:
Android 4: vous ne pouvez pas faire grand-chose, car vous ne pouvez pas gérer la couleur de la barre d'état à partir de l'API ... la seule chose que vous pouvez faire est de définir la barre d'état comme translucide et de déplacer un élément coloré de votre interface utilisateur sous le statut bar. Pour ce faire, vous devez jouer avec
dans votre mise en page principale. Cela vous permet de dessiner votre mise en page sous la barre d'état. Ensuite, vous devez jouer avec du rembourrage avec le haut de votre disposition principale.
Android 5 et supérieur: vous devez définir un style avec
cela permet au tiroir de navigation de chevaucher la barre d'état.
Ensuite, pour changer la couleur en gardant la barre d'état transparente, vous devez définir la couleur de la barre d'état avec
où tiroirLayout est défini comme ceci
la source
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
. Quoi qu'il en soit, après des jours de recherche, j'ai trouvé quelque chose qui fonctionne vraiment (testé uniquement sur Lolllipop pour le moment). MerciModifiez colorPrimary dans le fichier colors.xml dans Values à la couleur que vous souhaitez que la barre d'état soit. Par exemple:
la source
Pour changer la couleur de la barre d'état, allez à
res/values-v21/styles.xml
et la couleur de la barre d'étatla source
Si vous souhaitez modifier la couleur de la barre d'état par programme (et à condition que l'appareil dispose d'Android 5.0). C'est un moyen simple de changer statusBarColor à partir de n'importe quelle activité et des méthodes très simples lorsque différents fragments ont une couleur de barre d'état différente.
la source
Si vous souhaitez travailler sur Android 4.4 et supérieur, essayez ceci. Je me réfère à la réponse de Harpreet et à ce lien. Android et la barre d'état transparente
Tout d'abord, appelez la méthode setStatusBarColored dans la méthode onCreate d'Activity (je l'ai mise dans une classe util). J'utilise une image ici, vous pouvez la changer pour utiliser une couleur.
Avant:
Après:
La couleur de la barre d'état a été modifiée, mais la barre de navigation est coupée, nous devons donc définir la marge ou le décalage de la barre de navigation dans la méthode onCreate.
Ensuite, la barre d'état ressemblera à ceci.
la source
C'est ce qui a fonctionné pour moi dans KitKat et avec de bons résultats.
la source
Encore une solution:
la source
changez le colorPrimaryDark à votre couleur désirée dans le fichier res / values / styles.xml
la source