Ich versuche, das Verhalten der Google Kalender-Anwendung zu reproduzieren:
ich habe jedoch keine Möglichkeit gefunden, die Statustextfarbe zu ändern. Wenn ich den colorPrimaryDark auf weiß gesetzt habe, 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?
Danke im Voraus
Ich bin nicht sicher, auf welcher API-Ebene Sie versuchen, ein Targeting durchzuführen, aber wenn Sie API 23-spezifisches Material verwenden können, können Sie Ihrer AppTheme styles.xml Folgendes hinzufügen:
<item name="Android:statusBarColor">@color/colorPrimaryDark</item>
<item name="Android:windowLightStatusBar">true</item>
wenn Android:windowLightStatusBar
auf true gesetzt ist, kann die Textfarbe der Statusleiste angezeigt werden, wenn die Farbe der Statusleiste weiß ist, und umgekehrt Wenn Android:windowLightStatusBar
auf false gesetzt ist, wird die Textfarbe der Statusleiste angezeigt Die Statusleiste ist dunkel.
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>
das können Sie programmgesteuert so machen Antwort
füge einfach das hinzu
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
es ist sehr einfach:
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
Versuchen Sie dies einmal.
Fügen Sie in Ihre Methode activity onCreate()
den folgenden Code ein.
try {
if (Android.os.Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(ContextCompat.getColor(this, R.color.color_red));
}
} catch (Exception e) {
e.printStackTrace();
}
Hinweis: color_red - ist die Farbe der Statusleiste.
Wie zuvor, erledigt SYSTEM_UI_FLAG_LIGHT_STATUS_BAR die Arbeit in meinem Fall. Vergessen Sie nicht, höher als API 22 einzustellen.
fügen Sie dies nach der setContentView zu oncreate hinzu:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}