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

4voto

Rehan Khan Punkte 291

Java: Verwenden Sie dies in der onCreate-Methode der Aktivität

Window window = this.getWindow();
window.setStatusBarColor(this.getResources().getColor(R.color.main_screen_bg_color));

Kotlin:

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

3voto

PRANAV SINGH Punkte 323

Für spezifische Aktivität nur verwenden Sie:

   Window window = this.getWindow();
   window.setStatusBarColor(this.getResources().getColor(R.color.red));

oder in Kotlin

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

im onCreate der Aktivität.

für die gesamte Anwendung aktualisieren Sie "colorPrimaryVariant" in themes.xml:

        <!-- Primäre Markenfarbe -->
        <item name="colorPrimary">@color/text_color</item>

        <!-- Primäre Markenfarbe, die für die Statusleistenfarbe verwendet wird -->
        <item name="colorPrimaryVariant">@color/red</item>

2voto

Vova K. Punkte 678

Noch eine Lösung:

final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);

2voto

Anh Duy Punkte 1046

Diese Lösung funktioniert nur bei API >= 23. In API Level 30 wurde setSystemUiVisibility() veraltet. Daher sollte WindowInsetsControllerCompat wie folgt verwendet werden:

fun changeColorStatusBar(color: Int = R.color.white) {
        val window: Window = window
        val decorView = window.decorView
        val wic = WindowInsetsControllerCompat(window, decorView)
        wic.isAppearanceLightStatusBars = true
        // Und dann können Sie jeder Hintergrundfarbe die Statusleiste setzen.
        window.statusBarColor = ContextCompat.getColor(this, color)
    }

1voto

Ich habe diesen Code verwendet, um die Statusleiste transparent zu machen

    activity?.window?.setFlags(
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
        WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
    )

Um es in Farbe zu ändern, habe ich diesen Code verwendet ich habe es im Fragment in onDetach() verwendet

activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)

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