Jak mówi tytuł, jak zmienić kolor ikon paska stanu, aby miał ciemny odcień zamiast domyślnego białego.Jak zmienić kolor/odcień ikon powiadomień paska stanu w Androidzie (marshmallow i powyżej 23+)?
OD
TO
Jak mówi tytuł, jak zmienić kolor ikon paska stanu, aby miał ciemny odcień zamiast domyślnego białego.Jak zmienić kolor/odcień ikon powiadomień paska stanu w Androidzie (marshmallow i powyżej 23+)?
OD
TO
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);
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"));
}
}
}
Jeśli używasz programowej metody ustawiania paska statusu, czy istnieje sposób, aby zmienić go z powrotem na normalną ciemną wersję? – Andrew
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