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>
user3065901
quelle
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.

Zielony
quelle
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
Stellen Sie
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>
Bolling
quelle
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).

D_Alpha
quelle
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>
Pratik Butani
quelle
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.

Lelouch
quelle
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

Fariz Agayev
quelle
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.

Dawid Polakowski
quelle