2017-12-24 7 views
3

Ich möchte eine Statusleiste durchscheinend und Navigationsleiste andere Farbe nicht wie blau durchscheinend oder weißWie ändert sich die Farbe der Navigationsleiste?

Mein Code

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <item name="android:statusBarColor">@android:color/transparent</item> 
     <item name="android:navigationBarColor">@color/colorPrimary</item> 
    </style> 

Aktivität

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      Window w = getWindow(); 
      w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 
     } 

die Statusleiste durchscheinend gut, aber die Navigationsleiste nicht Farbe ändern . Warum ?

navigation bar

+0

Was ist Ihr Anwendungs-API-Level? –

+0

Nur API-Ebene 24 –

Antwort

2

Wege-Navigation, Farbe zu ändern:

Werte-v21/style.xml

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

Programatically:

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

Dies funktionierte, aber wenn diesen Code hinzufügen, um die Statusleiste transluzent w.setFlags zu ändern (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); nicht geändert Farbnavigationsleiste –

+0

bedeutet, wenn Sie Statusleiste transluzent als Ihre Navigationsleiste Farbe nicht ändern? –

+0

ja dieses Problem :( –

1

Überprüfen Sie meine vorherige Answer es wird Ihnen definitiv helfen, das Ergebnis zu erhalten.

Sie können dies auf zwei Arten erreichen - entweder style oder Aktivität.

Werte-v21/style.xml

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

Mit Compat Bibliothek in Aktivitäts-

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

Basierend auf meinem Verständnis von "FLAG_LAYOUT_NO_LIMITS" in https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html [Fenster Flagge: Fenster darf sich außerhalb des Bildschirms erstrecken] Die Verwendung eines solchen Flags schiebt sowohl die Statusleiste als auch das Fenster aus dem Fenster Suchleiste. In der Tat mit Ihrer style.xml Datei und das Hinzufügen der Zeile

<color name="myWindowBackground">#D7DEB5</color> 

den weißen Farbe Fensterhintergrund zu ändern, ist es möglich, sowohl die Statusleiste Symbole und die Navigationsleiste Symbole aber nicht ihre Bars zu beachten. Darüber hinaus mit dem folgenden Code:

int statusBarColor = w.getStatusBarColor(); 
String hexStatusBarColor = String.format("#%08X", (0xFFFFFFFF & statusBarColor)); 
int navigationBarColor = w.getNavigationBarColor(); 
String hexNavigationBarColor = String.format("#%08X", (0xFFFFFFFF & navigationBarColor)); 
Log.d("FLAGS", "statusBarColor: " + hexStatusBarColor + " -- navigationBarColor: " + hexNavigationBarColor); 

Sie sehen, dass der statusBarColor („# 00000000“ vollständig transparent) und die navigationBarColor richtig eingestellt sind, aber nicht, da aus dem Fenster angezeigt.

Jetzt ohne das Flag "FLAG_LAYOUT_NO_LIMITS" erhalten Sie eine transparente statusBar (gleiche Farbe wie das windowBackground) und auch die gewünschte Farbe der Navigationsleiste, aber nicht sicher an dieser Stelle, was sonst noch der Code versucht zu bekommen Flagge.

Verwandte Themen