webentwicklung-frage-antwort-db.com.de

Farbe der Statusleiste wird nicht angezeigt - 5.0 Lollipop Android Studio: (AppCompat-v7: r21)

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.

40
Adifyr

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);
35
Wayne

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));
    }
35
Philipp E.

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.

12
BladeCoder

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

6
Tryagain Tsai

Ü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).

enter image description here

6
gkiko

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.

3
Patrick

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.

1
mehulmpt

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!

0
Adifyr

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));
}
0
Mwongera808

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.

0
Umer Farooq

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.

0
Starrover