Android状态栏图标颜色

我想知道是否可以更改状态栏图标颜色( 不是状态栏颜色, colorPrimaryDark在这里输入图像描述 比方说,我想要这个状态栏:
<item name="colorPrimaryDark">@android:color/white</item>

和黑色的图标,这可能吗?

谢谢。

编辑:

M开发人员预览中的新增内容:windowLightStatusBar。 在你的主题中翻转这个,告诉系统使用一个黑暗的前景,对于颜色较浅的状态栏很有用。 请注意M预览似乎有一个通知图标保持白色,而系统状态图标正确更改为半透明黑色的错误。

来自: Roman Nurik Google+ 信息 在这里输入图像描述

自从棒棒糖以来。 从Android 5.0开始,准则说:

通知图标必须是完全白色的。

即使他们不是,系统只会考虑你的图标的alpha通道,使其呈现白色

解决方法

在棒棒糖上有一个彩色图标的唯一方法是降低您的targetSdkVersion<21 ,但我认为你会更好地按照指导方针,只使用白色图标。

如果您仍然决定要使用彩色图标,则可以使用新的v4支持库中的DrawableCompat.setTint方法。

是的,可以将其更改为灰色(无自定义颜色),但这只适用于API 23及更高版本,只需将其添加到值-v23 / styles.xml

 <item name="android:windowLightStatusBar">true</item> 

在这里输入图像描述

@eOnOe回答了我们如何通过xml更改状态栏的色调。 但是我们也可以在代码中dynamic地改变它:

 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 /风格声明这个。

 <item name="colorPrimaryDark" tools:targetApi="23">@color/colorPrimary</item> <item name="android:windowLightStatusBar" tools:targetApi="23">true</item>