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>