Ich habe mich gefragt, ob es möglich ist, die Farbe der Statusleiste icons zu ändern (nicht die Farbe der Statusleiste, colorPrimaryDark
) Nehmen wir an, ich möchte diese Statusleiste mit:
<item name="colorPrimaryDark">@Android:color/white</item>
und die Icons in Schwarz, ist es möglich?
Vielen Dank.
EDIT:
Neu in der M-Entwicklervorschau: windowLightStatusBar. Umdrehen auf in Ihrem Design weist das System an, einen dunklen Vordergrund zu verwenden, der für .__ nützlich ist. hellere Statusleisten. Beachten Sie, dass die M-Vorschau einen Fehler aufweist Die Benachrichtigungssymbole bleiben weiß, während die Systemstatussymbole richtig auf halbtransparentes Schwarz umstellen.
von: Roman Nurik Google+ post
Nicht seit Lollipop. Beginnend mit Android 5.0 sagen die Richtlinien:
Benachrichtigungssymbole müssen vollständig weiß sein.
Auch wenn dies nicht der Fall ist, berücksichtigt das System nur den Alphakanal Ihres Symbols und macht sie weiß
Die einzige Möglichkeit, ein farbiges Symbol auf Lollipop zu haben, besteht darin, Ihre targetSdkVersion
auf die Werte <21
zu senken, aber ich denke, Sie sollten die Richtlinien besser befolgen und nur weiße Symbole verwenden.
Wenn Sie sich dennoch für farbige Symbole entscheiden, können Sie die Methode DrawableCompat.setTint aus der neuen v4-Support-Bibliothek verwenden.
@eOnOe hat geantwortet, wie wir den Statusbalkenfarbton durch XML ändern können. Wir können es aber auch dynamisch im Code ändern:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View decor = getWindow().getDecorView();
if (shouldChangeStatusBarTintToDark) {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
// We want to change tint color to white again.
// You can also record the flags in advance so that you can turn UI back completely if
// you have set other flags before, such as translucent or full screen.
decor.setSystemUiVisibility(0);
}
}
wenn Sie einen API-Level kleiner als 23 haben, müssen Sie ihn auf diese Weise verwenden. Es hat für mich funktioniert, erklären Sie dies unter v21/style.
<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
<item name="Android:windowLightStatusBar" tools:targetApi="23">true</item>
Die Einstellung von windowLightStatusBar
auf true
funktioniert nicht bei Mi-Telefonen, einigen Meizu-Telefonen, Blackview-Telefonen, WileyFox usw. Ich habe solchen Hack für Mi- und Meizu-Geräte gefunden. Dies ist keine umfassende Lösung dieses Leistungsproblems, aber vielleicht wäre es für jemanden nützlich.
Und ich denke, es wäre besser, wenn Sie Ihren Kunden sagen, dass die Statusleiste zum Färben (zum Beispiel) weiß ist - keine gute Idee. Anstatt verschiedene Hacks zu verwenden, ist es besser, entsprechend den Richtlinien eine geeignete colorPrimaryDark
zu definieren
Ja, du kannst es ändern. aber in api 22 und höher mit NotificationCompat.Builder und setColorized (true):
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, context.getPackageName())
.setContentTitle(title)
.setContentText(message)
.setSmallIcon(icon, level)
.setLargeIcon(largeIcon)
.setContentIntent(intent)
.setColorized(true)
.setDefaults(0)
.setCategory(Notification.CATEGORY_SERVICE)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(NotificationCompat.PRIORITY_HIGH);