Ich hatte folgende Anforderung: Programmatische Änderung der Statusleistenfarbe, wobei sie transparent bleibt, um dem Navigation Drawer zu ermöglichen, sich über der transparenten Statusleiste zu überlagern.
Das kann ich nicht über die API machen
getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)
Wenn Sie hier bei Stack Overflow nachsehen, haben alle Benutzer vor dieser Codezeile die Transparenz der Statusleiste mit
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
Ich kann Farbe und Transparenz der Statusleiste folgendermaßen verwalten:
-
Android 4: Es gibt nicht viel, was Sie tun können, da Sie die Statusleistenfarbe nicht über die API verwalten können ... das einzige, was Sie tun können, ist, die Statusleiste als transparent zu setzen und ein farbiges Element Ihrer Benutzeroberfläche unter der Statusleiste zu verschieben. Um dies zu tun, müssen Sie mit
android:fitsSystemWindows="false"
in Ihrem Hauptlayout spielen. Dadurch können Sie Ihr Layout unter der Statusleiste zeichnen. Dann müssen Sie mit einigem Padding oben in Ihrem Hauptlayout spielen.
-
Android 5 und höher: Sie müssen einen Stil definieren mit
true
@android:color/transparent
dadurch kann der Navigation Drawer die Statusleiste überlagern.
Dann um die Farbe zu ändern und die Statusleiste transparent zu halten, müssen Sie die Statusleistenfarbe mit
drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))
setzen, wobei drawerLayout wie folgt definiert ist