Answers:
自棒棒糖以来没有。从Android 5.0开始,准则如下:
通知图标必须完全为白色。
即使不是,系统也只会考虑您图标的Alpha通道,使它们呈现白色
在Lollipop上带有彩色图标的唯一方法是降低您targetSdkVersion
的价值观<21
,但我认为您最好遵循准则并仅使用白色图标。
但是,如果仍然决定要使用彩色图标,则可以使用新的v4支持库中的DrawableCompat.setTint方法。
<item name="android:windowLightStatusBar">true</item>
为我工作。
是的,可以将其更改为灰色(无自定义颜色),但这仅适用于API 23及更高版本,您只需将其添加到values-v23 / styles.xml中
<item name="android:windowLightStatusBar">true</item>
@eOnOe已经回答了我们如何通过xml更改状态栏色调。但是我们也可以在代码中动态更改它:
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);
}
}
如果您的API等级小于23,则必须使用这种方式。它对我有用,在v21 / style下声明了这一点。
<item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item>
<item name="android:windowLightStatusBar" tools:targetApi="23">true</item>
tools:targetApi="23"
零件告诉Lint禁止显示此警告。
是的,您可以更改它。但在api 22及更高版本中,使用NotificationCompat.Builder和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);