574 Stimmen

Wie ändert man die Farbe der Statusleiste in Android?

Zunächst einmal handelt es sich nicht um ein Duplikat wie unter Wie ändere ich die Hintergrundfarbe der Android-Statusleiste

Wie kann ich die Farbe der Statusleiste ändern, die dieselbe sein sollte wie in der Navigationsleiste.

Ich möchte, dass die Farbe der Statusleiste der Farbe der Navigationsleiste entspricht

Bildbeschreibung hier eingeben

804voto

Giorgio Punkte 12439

Android 5.0 Lollipop hat das Material Design-Theme eingeführt, das automatisch die Statusleiste basierend auf dem colorPrimaryDark-Wert des Themas einfärbt.

Hinweis von realdognose: Mit der Material Design-Bibliothek wird es colorPrimaryVariant sein.

Dies wird auf Geräten vor Lollipop dank der Bibliotheksunterstützung support-v7-appcompat ab Version 21 unterstützt. Blogpost über die Unterstützung von appcompat v21 von Chris Banes

enter image description here

Erfahren Sie mehr über das Material Theme auf der offiziellen Website der Android-Entwickler

451voto

codercat Punkte 22109

Aktualisierung:

Lollipop:

public abstract void setStatusBarColor (int color)

Hinzugefügt in API-Level 21

Android Lollipop brachte die Möglichkeit mit, die Farbe der Statusleiste in Ihrer App für eine immersivere Benutzererfahrung zu ändern und im Einklang mit den Materialdesign-Richtlinien von Google.

Hier ist, wie Sie die Farbe der Statusleiste mit der neuen Methode window.setStatusBarColor in API-Level 21 ändern können.

Die Änderung der Farbe der Statusleiste erfordert auch das Setzen von zwei zusätzlichen Flags im Fenster; Sie müssen das FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS-Flag hinzufügen und das FLAG_TRANSLUCENT_STATUS-Flag löschen.

Funktionsfähiger Code:

import android.view.Window;

...

Window window = activity.getWindow();

// Löschen des FLAG_TRANSLUCENT_STATUS-Flags:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// Hinzufügen des FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS-Flags zum Fenster
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// schließlich die Farbe ändern
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

Offizielle Entwicklerreferenz: setStatusBarColor(int)

Beispiel: material-design-everywhere

Chris Banes Blog- appcompat v21: Material Design für Pre-Lollipop-Geräte!

Bildbeschreibung hier eingeben

Der transitionName für den Ansichtshintergrund lautet android:status:background.

305voto

Niels Punkte 8934

Platzieren Sie dies in Ihrer values-v21/styles.xml, um dies auf Lollipop zu aktivieren:

        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>

61voto

Faisal Shaikh Punkte 3685

Für Java-Entwickler:

Wie @Niels bereits erwähnt hat, müssen Sie die Werte in values-v21/styles.xml platzieren:

@color/black

Fügen Sie jedoch tools:targetApi="lollipop" hinzu, wenn Sie eine einzelne styles.xml möchten, wie zum Beispiel:

@color/black

Für Kotlin-Entwickler:

window.statusBarColor = ContextCompat.getColor(this, R.color.color_name)

52voto

Steve Moretz Punkte 2188

Sie können diesen einfachen Code verwenden:

Einzeiler in Kotlin:

window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)

Ursprüngliche Antwort mit Java & manueller Versionsüberprüfung:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X