web-dev-qa-db-fra.com

Comment changer la couleur de la barre de navigation du système

Dans les instructions de Android 5.0, la barre de navigation semble personnalisable: http://www.google.com/design/spec/layout/structure.html#structure-system-bars

Comment puis-je changer la couleur de la barre de navigation? J'aimerais utiliser un style blanc.

Captures d'écran:enter image description hereenter image description hereenter image description hereenter image description here


Edit: Dans mes ressources, j'ai testé le style:

<item name="Android:navigationBarColor" tools:targetApi="21">@Android:color/white</item>

Mais les boutons sont blancs. Je voudrais le même moteur de rendu que la deuxième image.

enter image description here

23
alex

À partir de l'API 27, il est maintenant possible d'utiliser le style de lumière de la barre de navigation:

<item name="Android:navigationBarColor">@Android:color/white</item>
<item name="Android:windowLightNavigationBar">true</item>

De la documentation :

windowLightNavigationBar

Si cette option est définie, la barre de navigation sera dessinée de manière à être compatible avec un arrière-plan de barre de navigation clair.

Pour que cela prenne effet, la fenêtre doit dessiner la barre système arrière-plans avec windowDrawsSystemBarBackgrounds et la navigation la barre ne doit pas avoir été demandée pour être translucide avec windowTranslucentNavigation. Correspond au réglage SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR dans la vue de décoration.

17
EyesClear

Utilisez ceci dans votre Activité .

 if (Android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
        getWindow().setNavigationBarColor(getResources().getColor(R.color.green));
    }
15
Roadies

la barre de navigation n'est pas censée être colorée 

Lorsque vous personnalisez les barres de navigation et d'état, rendez-les transparentes ou modifiez uniquement la barre d'état. La barre de navigation doit rester noire dans tous les autres cas.

(source https://developer.Android.com/training/material/theme.html )

MAIS, vous pouvez utiliser cette bibliothèque pour réaliser vos objectifs :) https://github.com/jgilfelt/SystemBarTint

ajoutez cette ligne dans votre v21/style

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="Android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="Android:statusBarColor">@Android:color/transparent</item>
    <item name="Android:navigationBarColor">@color/colorPrimaryDark</item>
</style>

4
Huseyin

Vous pouvez également définir par programme la barre de navigation du système d'éclairage dans l'API 26:

View.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);

View pourrait être findViewById(Android.R.id.content).

Cependant rappelez-vous que:

Pour que cela prenne effet, la fenêtre doit demander FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS mais pas FLAG_TRANSLUCENT_NAVIGATION.

Voir documentation .

0
sosite

utilisez cette simple ligne pour changer la couleur de la barre de navigation en fonction de la couleur de fond de votre écran

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
            getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.any_color));
        }
0
Rahul