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

16voto

ranojan Punkte 763

Um die Farbe der Statusleiste zu ändern, gehen Sie zu res/values-v21/styles.xml und ändern Sie die Farbe der Statusleiste

        <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">#0000FF</item>

15voto

DSoldo Punkte 929

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

11voto

Nabin Punkte 1313

Wenn Sie die Farbe der Statusleiste programmgesteuert ändern möchten (vorausgesetzt, das Gerät hat Android 5.0). Dies ist eine einfache Möglichkeit, statusBarColor von jeder Aktivität aus zu ändern und sehr einfache Methoden, wenn unterschiedliche Fragmente unterschiedliche Statusleistenfarben haben.

 /**
 * @param colorId ID der Farbe
 * @param isStatusBarFontDark Helle oder dunkle Farbe
 */
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = ContextCompat.getColor(this, colorId)
        setSystemBarTheme(isStatusBarFontDark)
    }
}

/** Ändert das Systemleisten-Thema.  */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
    // Aktuelle Flags abrufen
    val lFlags = window.decorView.systemUiVisibility
    // SystemUiVisibility je nach gewünschtem hellen oder dunklen Thema aktualisieren
    window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

7voto

PhilipS Punkte 379

Ändern Sie die colorPrimary in der colors.xml in Werte auf die Farbe, die Sie für die Statusleiste möchten. Zum Beispiel:

#800000 // ändert die Farbe der Statusleiste zu Burgunder
#303F9F
#FF4081
#FF0000
#FFFFFF
#fffdd0
#800000

7voto

Lösung ist sehr einfach, fügen Sie die folgenden Zeilen in Ihre style.xml ein:

Für den Dunkelmodus:

false
@color/black

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