Android M Light et Dark barre d'état par programme - comment faire à nouveau sombre?
Dans l'Android M, nous avons la capacité de faire des icônes de barre d'état d'être sombre. Pour faire cela, nous pouvons spécifier l'attribut dans le thème du xml:
<item name="android:windowLightStatusBar">true</item>
OU nous chat l'a mis à exécution avec ce code:
View someView = findViewById(R.id.some_view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
someView.setSystemUiVisibility(someView.getSystemUiVisibility() | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
Et c'est en fait fonctionne très bien. Mais la question est de savoir comment définir correctement une barre d'état en mode foncé, au moment de l'exécution?
J'ai déjà essayé des variantes:
//Makes status bar mode dark, but also hides it along with all navigation views.
someView.setSystemUiVisibility(someView.getSystemUiVisibility() | ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
//Does nothing
someView.setSystemUiVisibility(someView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
//Also does nothing
someView.setSystemUiVisibility(someView.getSystemUiVisibility() ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Alors, comment il peut être fait dans un droit chemin?
source d'informationauteur udenfox
Vous devez vous connecter pour publier un commentaire.
La solution posté par @Aracem est valide, mais ne fonctionne pas si vous essayez de changer également les couleur d'arrière-plan de la barre d'état. Dans mon cas, je le fais de la manière suivante.
Pour permettre windowLightStatusBar(par programmation,à l'intérieur d'un Utils classe par exemple):
Pour restaurer la Barre d'état à l'état précédent:
Restauration de la couleur de la barre d'état est assez, il restaure également les icônes de couleurs.
TRÈS IMPORTANT: L'opération de restauration n'aura pas lieu jusqu'à ce que le point de vue utilisé dans setLightStatusBar(vue de la Vue..) disparaît(qui est, vue.getVisibility()==DISPARU|INVISIBLE) de l'écran.
Selon Nick Boucher projet "Plaid"
Vous pouvez trouver le projet Ici
je vais faire quelques changements dans les réponses ci-dessus.
faire une classe
et de l'Appeler partout où vous voulez, comme ce
Je me base sur @Aracem et @Carlos Hernández Gil, mais je pense qu'il sera facile à comprendre, si nous utilisons XOR au niveau du bit (^ opérateur en Java)
Expliquer
Premier coup d'oeil,
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
etsetSystemUiVisibility
Je pense que 2 lignes de code ci-dessous est assez difficile à comprendre
Au premier coup d'oeil, je pense juste que nous pouvons utiliser de simple comme
Mais nous devrions utiliser
|
et^
carExemple, nous voulons définir à la fois la barre de statut et navigationbar à la lumière, alors nous allons utiliser
Lorsque nous ne voulons pas de barre d'état est léger plus, nous pouvons utiliser
OU
Pour en savoir plus pourquoi nous utilisons
|
et^
je pense que le tutoriel ci-dessous peuvent aiderhttps://medium.com/@JakobUlbrich/flag-attributes-in-android-how-to-use-them-ac4ec8aee7d1
Voici mon comprendre. Espérons que cette aide