Android Lollipop ändern die Farbe der Navigationsleiste


137

In meiner App muss ich die Farbe der unteren Navigationsleiste ändern. Ich habe viele Beiträge gesehen, kann sie aber mit der Lösung nicht finden. Ich verwende die AppCompat-Bibliothek.

Geben Sie hier die Bildbeschreibung ein

v21 / styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
       <item name="android:windowBackground">@drawable/bgpreview</item>
       <item name="android:colorPrimary">@color/MyColor</item>
       <item name="android:colorPrimaryDark">@color/MyColor</item>
       <item name="android:windowContentOverlay">@null</item>
       <item name="android:textColorPrimary">@color/MyColor</item>
       <item name="colorAccent">@color/MyColor</item>
       <!-- darker variant for the status bar and contextual app bars -->
       <item name="android:windowContentTransitions">true</item>
       <item name="android:windowAllowEnterTransitionOverlap">true</item>
       <item name="android:windowAllowReturnTransitionOverlap">true</item>
       <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
       <item name="android:windowSharedElementExitTransition">@android:transition/move</item>

       <item name="windowActionBar">false</item>
       <item name="android:textAllCaps">false</item>

</style>

Kannst du die Datei style.xml posten? Nicht das Ganze. Nur verwandte Schnipsel
Blackbelt

Wie kann ich die Standardfarbe zurücksetzen?
GMX

Antworten:


262

Dies kann in styles.xml mit erfolgen

<item name="android:navigationBarColor">@color/theme_color</item>

oder

window.setNavigationBarColor(@ColorInt int color)

http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

Beachten Sie, dass die Methode in Android Lollipop eingeführt wurde und unter API-Version <21 nicht funktioniert.

Die zweite Methode (funktioniert mit KitKat) besteht darin, windowTranslucentNavigation im Manifest auf true zu setzen und eine farbige Ansicht unter der Navigationsleiste zu platzieren.


Danke dir. Ich habe meinem Style-Code <item name = "android: navigationBarColor"> @ color / MyColor </ item> hinzugefügt und funktioniert jetzt.
user3065901

31
Gibt es eine Möglichkeit, die Farbe der Symbole zu ändern?
Jamsheed Kamarudeen

10
<item name="android:navigationBarColor">@color/theme_color</item>in values-21Ordner hinzufügen
Pratik Butani


2
Fügen Sie dies nicht in Ihre Stildatei ein. <item name="android:windowDrawsSystemBarBackgrounds">false</item>Andernfalls funktioniert die Färbung der Systemleiste nicht.
Alexey Ozerov

70

So geht's programmatisch:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                
   getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color));
}

Verwenden der Compat-Bibliothek:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

So geht's mit xml im Ordner values-v21 / style.xml:

<item name="android:navigationBarColor">@color/your_color</item>

1
Dies ist eine seltsame Option! Ich habe eine App, die die Navigationsleiste schwarz mit schwarzen Tasten macht, die es unmöglich machen, die Home / Back / letzten
Softkeys

37

Hier sind einige Möglichkeiten, die Farbe der Navigationsleiste zu ändern.

Durch die XML

1- values-v21 / style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>

Oder wenn Sie es nur mit den Werten / Ordner tun möchten, dann-

2- values ​​/ style.xml

<resources xmlns:tools="http://schemas.android.com/tools">

<item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>

Sie können die Farbe der Navigationsleiste auch durch Programmieren ändern .

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));

Durch die Verwendung von Compat Library-

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

Weitere Informationen finden Sie unter http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int).


Ich konnte nicht verwenden tools:targetApi? Ist diese Funktionalität veraltet?
Winklerrr

1
@winklerrr Es ist nicht veraltet, siehe meine aktualisierte Antwort.
D_Alpha

Wenn ich mich entscheide, die Farbe programmgesteuert zu ändern, muss ich dies in jedem Activity/ tun Fragment? Oder gibt es einen bestimmten Ort, an dem ich es tun sollte? Vielleicht in der Klasse, die sich erstreckt Application?
Winklerrr

1
Sie müssen dies in jeder Aktivität tun, oder Sie können für verschiedene Aktivitäten unterschiedliche Stile festlegen.
D_Alpha

Keine Notwendigkeit, styles.xmlwährend der Verwendung zu überschreibentools:targetApi
Farshad Tahmasbi

8

Sie können die folgende Zeile in den Ordner values-v21 / style.xml einfügen :

<item name="android:navigationBarColor">@color/theme_color</item>

1

Sie können Ihr Thema auch mit dem Themeneditor ändern, indem Sie auf Folgendes klicken:

Extras -> Android -> Themeneditor

Dann müssen Sie nicht einmal zusätzlichen Inhalt in Ihre XML- oder .class-Dateien einfügen.


Netter Tipp! Für mich war es nur unter Extras -> Themeneditor.
Sam

Jetzt ist der Theme Editor ab 3.3 weg.
Jenix

1
  1. Schwarze Farbe erstellen: <color name="blackColorPrimary">#000001</color> (not #000000)
  2. Schreiben Sie mit Stil: <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

Problem ist, dass Android höhere Version für # 000000 transparent machen


0

Sie können es direkt in styles.xml ändern Datei \ app \ src \ main \ res \ values ​​\ styles.xml ändern

Diese Arbeit an älteren Versionen habe ich in KitKat geändert und komme hierher.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.