Wie ändere ich die Farbe/den Farbton der Statusleisten-Benachrichtigungssymbole in Android (Marshmallow und höher als 23)?

Lesezeit: 2 Minuten

Benutzer-Avatar
Sazid

Wie der Titel schon sagt, wie ändere ich die Farbe der Statusleistensymbole so, dass sie einen dunklen Farbton anstelle des Standardweiß haben?

AUS

Geben Sie hier die Bildbeschreibung ein

ZU

dunkle Statusleiste

Benutzer-Avatar
Sazid

Damit die Statusleistensymbole einen dunklen Farbton anstelle des standardmäßigen Weiß haben, fügen Sie das folgende Tag in Ihrer hinzu styles.xml (genauer gesagt in values-v23/styles.xml) Datei:

<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>

Sie können das Flag auch zur Laufzeit ändern, indem Sie es auf any setzen View:

View yourView = findViewById(R.id.your_view);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if (yourView != null) {
        yourView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    }
}

Wenn Sie die Änderungen zurücksetzen möchten, löschen Sie das Flag wie folgt:

yourView.setSystemUiVisibility(0);

  • Wenn Sie die programmatische Methode zum Einstellen der hellen Statusleiste verwenden, gibt es eine Möglichkeit, sie wieder in die normale dunkle Version zu ändern?

    – Andreas

    17. November 2015 um 3:50 Uhr

  • Wenn das nicht funktioniert, können Sie versuchen, die neu zu erstellen View selbst, auf dem die Flagge gesetzt wurde. Für mich erstelle ich nur eine Fragment wenn eine Einstellung geändert wird.

    – Sazid

    18. November 2015 um 12:44 Uhr


  • true

    – Johannes Fehler

    16. August 2016 um 7:10 Uhr

  • Um es wieder dunkel zu machen: rootView.setSystemUiVisibility(rootView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); Leider verursacht dies ein merkliches Redraw-Flimmern für mich, alle Vorschläge dafür sind willkommen.

    – NeilS

    24. August 2016 um 17:33 Uhr


  • Warum wird diese Methode für eine Ansicht aufgerufen? Was ist yourView in diesem Fall? Hat jemand Erkenntnisse?

    – Capt.Swag

    22. Oktober 2016 um 11:30 Uhr

Benutzer-Avatar
Jian Li

Unten ist ein Beispielcode, ändern Sie die Farbe der Statusleiste, wenn Sie zwischen Hoch- und Querformat wechseln. Hochformat: heller Balken, dunkles Symbol; Querformat: dunkler Balken, helles Symbol; Thema: “Theme.AppCompat.Light”

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Window window = getWindow();
        View decorView = window.getDecorView();
        if(Configuration.ORIENTATION_LANDSCAPE == newConfig.orientation) {
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                window.setStatusBarColor(Color.parseColor("#55000000")); // set dark color, the icon will auto change light
            }
        } else {
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                window.setStatusBarColor(Color.parseColor("#fffafafa"));
            }
        }
    }

1013910cookie-checkWie ändere ich die Farbe/den Farbton der Statusleisten-Benachrichtigungssymbole in Android (Marshmallow und höher als 23)?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy