[Android]Android M如何设置状态栏图标黑白色
Google发布了Android新的大版本M,也进一步加强了应用沉浸式的支持,问题是,沉浸之后,如果界面也是浅色的,就会造成图标看不清楚的问题。因此,M之后,Android原生就支持状态栏图标的黑白色处理了。
M上面增加了一个Flag(以下内容引自Google SDK文档):
public static final int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Added in API level 23
Flag for setSystemUiVisibility(int)
: Requests the status bar to draw in a mode that is compatible with light status bar backgrounds.
For this to take effect, the window must request FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
but not FLAG_TRANSLUCENT_STATUS
.
See Also
windowLightStatusBar
Constant Value: 8192 (0x00002000)
只要使用这个Flag,就可以设置状态栏图标为黑色或者白色(其实按照本意,是告诉系统状态栏顶部是白色的,需要按一个合适的模式去绘制状态栏,当然,其实就是黑色)。
具体使用方法:
public void setDarkStatusIcon(boolean bDark) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ View decorView = getWindow().getDecorView(); if(decorView != null){ int vis = decorView.getSystemUiVisibility(); if(bDark){ vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } else{ vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; } decorView.setSystemUiVisibility(vis); } } }
这个Flag只有在使用了FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
并且没有使用 FLAG_TRANSLUCENT_STATUS的时候才有效,也就是只有在状态栏全透明的时候才有效。