Erstens ist es kein Duplikat wie in So ändern Sie die Hintergrundfarbe der Android-Statusleiste
Wie ändere ich die Farbe der Statusleiste, die mit der in der Navigationsleiste übereinstimmen soll?
Ich möchte, dass die Farbe der Statusleiste mit der Farbe der Navigationsleiste übereinstimmt
android
android-navigation
android-statusbar
Codercat
quelle
quelle
android:statusBarColor
. Sie können es einfach hinzufügenvalues-v21/styles.xml
.Antworten:
Android 5.0 Lollipop hat das Material Design-Thema eingeführt, das die Statusleiste basierend auf dem
colorPrimaryDark
Wert des Themas automatisch einfärbt .Dies wird auf dem Geräte-Pre-Lollipop dank der Bibliothek support-v7-appcompat ab Version 21 unterstützt. Blogpost über den Support appcompat v21 von Chris Banes
Weitere Informationen zum Materialthema finden Sie auf der offiziellen Website der Android-Entwickler
quelle
Aktualisieren:
Lutscher:
Hinzugefügt in API Level 21
Android Lollipop brachte die Möglichkeit mit sich, die Farbe der Statusleiste in Ihrer App zu ändern, um eine umfassendere Benutzererfahrung zu erzielen und mit der von Google übereinzustimmen
Material Design Guidelines
.So können Sie die Farbe der Statusleiste mit der in eingeführten neuen
window.setStatusBarColor
Methode ändernAPI level 21
.Zum Ändern der Farbe der Statusleiste müssen außerdem zwei zusätzliche Flags im Fenster gesetzt werden. Sie müssen die
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
Flagge hinzufügen und die Flagge löschenFLAG_TRANSLUCENT_STATUS
.Arbeitscode:
...
Offizielle Entwicklerreferenz: setStatusBarColor (int)
Beispiel: Materialdesign überall
Chris Banes Blog-Appcompat v21: Materialdesign für Pre-Lollipop-Geräte!
Der
transitionName
Hintergrund für die Ansicht wird seinandroid:status:background
.quelle
android:statusBarColor
in Ihrervalues-v21/styles.xml
Datei per androiddocs.com/training/material/theme.html wie folgt festlegen<item name="android:statusBarColor">@color/primary_color</item>
Platzieren Sie dies als Ihre Werte-v21 / styles.xml, um dies auf Lollipop zu aktivieren:
quelle
targeApi
Attribute hinzufügen , wenn Sie eine einzelne Stildatei verwalten möchten. Lesen Sie meine Antwort als Referenz stackoverflow.com/a/48565459/4291272Dies ist eine sehr einfache Möglichkeit, dies ohne Bibliothek zu tun: Wenn die Betriebssystemversion unter Kitkat nicht unterstützt wird, ist nichts passiert. Ich mache diese Schritte:
dann habe ich diese Methode gemacht:
Außerdem benötigen Sie beide Methoden, um die Höhe der Aktionsleiste und der Statusleiste zu ermitteln:
Dann brauchen Sie nur noch diese Zeile, um die Farbe der Statusleiste festzulegen:
quelle
Wie @Niels sagte, müssen Sie in values-v21 / styles.xml platzieren:
Aber fügen
tools:targetApi="lollipop"
Sie hinzu, wenn Sie einzelne styles.xml möchten, wie:quelle
Nun, die Izhar-Lösung war in Ordnung, aber ich persönlich versuche, Code zu vermeiden, der so aussieht:
Außerdem möchte ich auch keinen Code duplizieren. In Ihrer Antwort muss ich in allen Aktivitäten eine solche Codezeile hinzufügen:
Also nahm ich die Izhar-Lösung und verwendete XML, um das gleiche Ergebnis zu erzielen: Erstellen Sie ein Layout für die StatusBar status_bar.xml
Beachten Sie die Höhen- und Höhenattribute. Diese werden in den Werten "Werte-v19" und "Werte-v21" weiter unten festgelegt.
Fügen Sie dieses Layout Ihrem Aktivitätenlayout hinzu, indem Sie include, main_activity.xml, verwenden:
Fügen Sie für die Symbolleiste das Attribut "Oberer Rand" hinzu:
Fügen Sie in Ihren appTheme style-v19.xml und styles-v21.xml das windowTranslucent attr hinzu:
styles-v19.xml, v21:
Und schließlich fügen Sie auf Ihren Dimensionen, dimensions-v19, dimension-v21, die Werte für die Symbolleiste topMargin und die Höhe der statusBarHeight: dimension.xml für weniger als KitKat hinzu:
Die Höhe der Statusleiste beträgt für KitKat und höher immer 24dp dimension-v19.xml:
dimension-v21.xml für Lolipop, fügen Sie bei Bedarf einfach die Höhe hinzu:
Dies ist das Ergebnis für Jellybean KitKat und Lollipop:
quelle
Sie können diesen einfachen Code verwenden:
Einzeiler in Kotlin:
Ursprüngliche Antwort mit Java & manueller Versionsprüfung:
quelle
ContextCompat
. In Kotlin ist es dann genau das:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Erstellen Sie einfach ein neues Thema in res / values / styles.xml, in dem Sie den "colorPrimaryDark" ändern, der die Farbe der Statusleiste ist:
Ändern Sie das Aktivitätsthema in AndroidManifest.xml in das gewünschte. Bei der nächsten Aktivität können Sie die Farbe wieder in das ursprüngliche ändern, indem Sie das ursprüngliche Thema auswählen:
So sollte Ihre res / values / colours.xml aussehen:
quelle
Um die Farbe für den obigen Lolipop zu ändern, fügen Sie diese einfach zu Ihrer styles.xml hinzu
Denken Sie jedoch daran , wenn Sie eine helle Farbe für die Statusleiste haben möchten, fügen Sie auch diese Zeile hinzu
quelle
Mit dieser Funktion können Sie die Farbe der Statusleiste ändern. funktioniert auf Android L bedeutet API 21 und höher und benötigt eine Farbzeichenfolge wie
"#ffffff"
.quelle
Ich hatte diese Anforderung: Programmgesteuertes Ändern der Statusleistenfarbe, um sie transparent zu halten , damit sich die Navigationsleiste über die transparente Statusleiste hinweg überzeichnen kann.
Ich kann das nicht mit der API machen
Wenn Sie hier im Stapelüberlauf alle vor dieser Codezeile überprüfen, setzen Sie die Transparenz der Statusleiste auf solid mit
Ich kann Farbe und Transparenz der Statusleiste folgendermaßen verwalten :
Android 4: Sie können nicht viel tun, da Sie die Farbe der Statusleiste nicht über die API verwalten können. Sie können lediglich die Statusleiste als durchscheinend festlegen und ein farbiges Element Ihrer Benutzeroberfläche unter den Status verschieben Bar. Dazu musst du spielen
in Ihrem Hauptlayout. Auf diese Weise können Sie Ihr Layout unter der Statusleiste zeichnen. Dann müssen Sie mit etwas Polsterung oben in Ihrem Hauptlayout spielen.
Android 5 und höher: Sie müssen einen Stil mit definieren
Dadurch kann die Navigationsleiste die Statusleiste überlappen.
Um die Farbe zu ändern und die Statusleiste transparent zu halten, müssen Sie die Farbe der Statusleiste festlegen
wobei drawerLayout so definiert ist
quelle
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
. Wie auch immer, nach Tagen der Suche habe ich etwas gefunden, das wirklich funktioniert (momentan nur auf Lolllipop getestet). Vielen DankBearbeiten Sie den colorPrimary in der Datei colours.xml in Values auf die Farbe, die die Statusleiste haben soll. Zum Beispiel:
quelle
Um die Farbe der Statusleiste zu ändern, gehen Sie zu
res/values-v21/styles.xml
und Farbe der Statusleistequelle
Wenn Sie die Farbe der Statusleiste programmgesteuert ändern möchten (und vorausgesetzt, das Gerät verfügt über Android 5.0). Dies ist eine einfache Möglichkeit, statusBarColor von jeder Aktivität aus zu ändern, und sehr einfache Methoden, wenn verschiedene Fragmente unterschiedliche Farben in der Statusleiste haben.
quelle
Wenn Sie mit Android 4.4 und höher arbeiten möchten, versuchen Sie dies. Ich beziehe mich auf Harpreets Antwort und diesen Link. Android und die transparente Statusleiste
Rufen Sie zuerst die setStatusBarColored-Methode in der onCreate-Methode von Activity auf (ich habe sie in eine util-Klasse eingefügt). Ich verwende hier ein Bild. Sie können es ändern, um eine Farbe zu verwenden.
Vor:
Nach:
Die Farbe der Statusleiste wurde geändert, aber die Navigationsleiste ist abgeschnitten. Daher müssen Sie den Rand oder den Versatz der Navigationsleiste in der onCreate-Methode festlegen.
Dann sieht die Statusleiste so aus.
quelle
Dies hat bei KitKat und mit guten Ergebnissen für mich funktioniert.
quelle
Noch eine Lösung:
quelle
Ändern Sie den colorPrimaryDark in die gewünschte Farbe in der Datei res / values / styles.xml
quelle