Textfarbe der Statusleiste ändern, wenn primaryDark weiß ist
Lesezeit: 2 Minuten
MarcForn
Ich versuche, das Verhalten der Google Kalender-Anwendung zu reproduzieren:
aber ich habe keine Möglichkeit gefunden, die Statustextfarbe zu ändern. Wenn ich colorPrimaryDark auf weiß setze, kann ich weder die Symbole noch den Text der Statusleiste sehen, da ihre Farbe ebenfalls weiß ist.
Gibt es eine Möglichkeit, die Textfarbe der Statusleiste zu ändern?
Ich bin mir nicht sicher, auf welche API-Ebene Sie abzielen möchten, aber wenn Sie API 23-spezifische Dinge verwenden können, können Sie Folgendes zu Ihrer AppTheme styles.xml hinzufügen:
Wenn android:windowLightStatusBar auf true gesetzt ist, ist die Textfarbe der Statusleiste sichtbar, wenn die Farbe der Statusleiste weiß ist, und umgekehrt, wenn android:windowLightStatusBar auf false gesetzt ist, wird die Textfarbe der Statusleiste so gestaltet, dass sie sichtbar ist, wenn die Farbe der Statusleiste dunkel ist.
Beispiel:
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!-- Status bar stuff. -->
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>
</style>
Wenn mein API-Level 21 ist, funktioniert es nicht. Können Sie mir die Alternative dafür nennen?
– Bala Saikrupa Puram
31. Januar 2017 um 5:24 Uhr
Irgendeine Lösung für API 21 gefunden. Bitte helfen Sie?
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// set status text dark
getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this,R.color.white));// set status background white
und umgekehrt:
getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this, R.color.black));
View decorView = getWindow().getDecorView(); //set status background black
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); //set status text light
Nach der Antwort von @ Jon würde ich sie ein wenig aktualisieren, aber auf neuen APIs. Bei neuen APIs mit Themen und Nachtthemen (dunkler Modus) würde ich dies tun, indem ich die v23/styles.xml hinzufüge und dort den Hintergrund und die Textfarbe der Statusleiste festlege:
Auf diese Weise stellen wir den hellen Hintergrund (und die Textfarbe) für die Statusleiste ein, aber nur für Geräte mit API 23+. Auf Geräten <23 wird der Hintergrund nicht geändert, da ich denke, dass dies etwas ist, was wir nicht wissen wollen, dass die Textfarbe weiß bleibt. Das dunkle Thema wurde auf API 29 hinzugefügt, sodass wir uns vor dem dunklen Thema auf API 21 nicht fürchten müssen;)
Der Nachteil davon ist jedoch, dass wir eine weitere Datei hinzufügen, an deren Verwaltung wir uns erinnern müssen.
Mahr
Wie zuvor erledigt die SYSTEM_UI_FLAG_LIGHT_STATUS_BAR die Arbeit in meinem Fall, vergessen Sie nicht, auf höher als API 22 einzustellen.
fügen Sie dies nach dem setContentView zu oncreate hinzu:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
sakiM
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// set status text dark
getWindow().setStatusBarColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimaryDark));// set status background white
Für mich geht das
Dies erfordert API-Level 23+.
– Kandschi
15. April 2020 um 16:19 Uhr
13357300cookie-checkTextfarbe der Statusleiste ändern, wenn primaryDark weiß istyes