Ich benutze die AppCompat-v7:21.0.0
Support-Bibliothek für Android 5.0 Lollipop in Android Studio. Mein Problem ist, dass die Farbe der Statusleiste geändert werden kann, indem colorPrimaryDark
in dem values/styles.xml
-Datei wird sowohl in der XML-Layoutvorschau als auch im Emulator schwarz angezeigt.
Also, was ist falsch? Vermisse ich etwas? Lass es mich wissen, bitte. Vielen Dank.
BEARBEITEN: Mir ist bekannt, dass das Ändern der Statusleistenfarbe bei Versionen vor Lollipop nicht möglich ist. Meine Vorschau des XML-Layout-Editors und mein Emulator sind beide auf API-Level 21 (5.0 Lollipop) eingestellt. Aber die Statusleiste hat immer noch nicht die Farbe, auf die ich sie in colorPrimaryDark
eingestellt habe. Ich habe versucht, statusBarColor
in styles.xml
aber ohne Erfolg. Es ist immer noch schwarz.
AUCH: Ich habe eine der Antworten auf eine ähnliche Frage gesehen, bei der sie mir geraten haben, mein minSdkVersion
auf 21 zu setzen. Ich habe das versucht, aber es hat nicht funktioniert. Und ich möchte, dass meine App auf Geräten mit API-Level 15 und höher ausgeführt wird.
Bitte lesen Sie dies: Damit dies wirksam wird, muss das Fenster die Systemleistenhintergründe mit zeichnen
Android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
aber
Android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
darf nicht gesetzt werden ( Source )
Falls Sie nicht wissen, wie Sie dieses Flag hinzufügen sollen:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
Das hat bei mir funktioniert:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.some_color));
}
Haben Sie die Ziel-SDK-Version auf 21 festgelegt? Ich hatte das gleiche Problem, als ich die Ziel-SDK-Version auf 19 verließ. Sie können das min-SDK auf einen niedrigeren Wert einstellen.
Und natürlich müssen Sie vom richtigen Thema erben und sicherstellen, dass Ihre Aktivität es verwendet.
test auf meinem nexus7 5.1.1
set in style.xml v21/v22 funktioniert nicht
<item name="Android:windowDrawsSystemBarBackgrounds">true</item>
<item name="Android:statusBarColor">@Android:color/holo_red_dark</item>
aber
in Aktivität gesetzt
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(Android.R.color.holo_red_dark));
}
ist Arbeit für mich
Überprüfen Sie, ob Sie styles.xml
Im Ordner values-v21
Bearbeiten. Wenn Sie die SDK-Version auf 21 setzen, wird im Ordner values
nicht nach styles.xml
Gesucht (dies sollte jedoch der Fall sein).
Das Ändern der Statusleistenfarbe in Pre-Lollipop (5.0) ist nicht möglich, indem colorPrimaryDark festgelegt wird. Siehe dieser Artikel .
Auf älteren Plattformen emuliert AppCompat nach Möglichkeit die Farbgestaltung. Im Moment beschränkt sich dies auf das Färben der Aktionsleiste und einiger Widgets.
In meinem Fall enthielt values-v21/styles.xml
Die folgende Zeile, die die in values/style.xml
Definierte Statusleistenfarbe mit colorPrimaryDark
überschrieb:
<item name="Android:statusBarColor">@Android:color/transparent</item>
Das Entfernen hat bei mir funktioniert.
Im v22-appcompat
Sie (Android) haben jetzt das Rendern der Statusleistenfarbe in der Android Studio-Vorschau hinzugefügt!
Über die Zeit ... Stellen Sie auf jeden Fall sicher, dass Ihre Bibliothek appcompat
auf die neueste Version aktualisiert ist, nämlich v22.0. +.
Prost!
Das hat bei mir funktioniert. Die Farbe der Statusleiste wurde aus den Stilen entfernt. Addieren Sie Flagge und setzen Sie dann die Farbe, die Sie so möchten
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.your_color));
}
Ich habe an einer alten App gearbeitet und versucht, sie in einen Materialstil umzuwandeln. Der Code und alles war in Ordnung, aber der einzige Fehler, den ich hatte, der das Abtönen der Statusleiste auf> = Lollipop-Geräten verhinderte, war "TargetSDKVersion" in build.gradle. Es wurde auf weniger als 21 eingestellt. Ich habe es auf 21 geändert und das Tönen der Statusleiste hat begonnen.
In meinem Fall war der Täter die Bibliothek jfeinstein10/SlidingMenu
. Ich habe die Bibliothek durch Android navigation drawer
Ersetzt und jetzt wird die Farbe der Statusleiste korrekt angezeigt.