2015-10-24 16 views

Odpowiedz

52

Dla ikon paska stanu mieć ciemny odcień zamiast domyślnego białego, dodaj następujący tag w Twój plik styles.xml (lub dokładniej w pliku values-v23/styles.xml):

<item name="android:windowLightStatusBar" tools:targetApi="23">true</item> 

Można również zmienić flagę w czasie wykonywania przez ustawienie go w dowolnym View:

View yourView = findViewById(R.id.your_view); 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    if (yourView != null) { 
     yourView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 
    } 
} 

Jeśli chcesz przywrócić zmiany, usunąć flagę tak:

yourView.setSystemUiVisibility(0); 
+1

Jeśli używasz programowej metody ustawiania paska statusu, czy istnieje sposób, aby zmienić go z powrotem na normalną ciemną wersję? – Andrew

+0

Jeśli to nie zadziała, możesz spróbować odtworzyć widok 'view', na którym ustawiono flagę. Dla mnie, po odtworzeniu "Fragmentu" po zmianie preferencji. – Sazid

+0

true –

1

Poniżej znajduje się przykładowy kod, zmiana koloru paska stanu podczas przełączania między krajobrazem portretu &. tryb portretowy: jasny pasek, ciemna ikona; tryb krajobrazu: ciemny pasek, ikona światła; Motyw: "Theme.AppCompat.Light"

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     Window window = getWindow(); 
     View decorView = window.getDecorView(); 
     if(Configuration.ORIENTATION_LANDSCAPE == newConfig.orientation) { 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       window.setStatusBarColor(Color.parseColor("#55000000")); // set dark color, the icon will auto change light 
      } 
     } else { 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
       window.setStatusBarColor(Color.parseColor("#fffafafa")); 
      } 
     } 
    } 
Powiązane problemy