android 想要动态控制状态栏的显示与隐藏有两种方式实现:
第一种是通过View 的setSystemUiVisibility() 方法:其主要参数入下:
View.SYSTEM_UI_FLAG_FULLSCREEN, //全屏,状态栏和导航栏不显示
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION, //状态栏显示,隐藏导航栏
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, //布局全屏,状态栏任然显示,但状态栏会盖在布局上
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,
View.SYSTEM_UI_FLAG_LAYOUT_STABLE,
View.SYSTEM_UI_FLAG_LOW_PROFILE,
View.SYSTEM_UI_FLAG_VISIBLE, //显示状态栏和导航栏
View.SYSTEM_UI_LAYOUT_FLAGS
虽然此方法可以做到动态控制状态栏的显示,但是此方法只支持android4.0以上的版本。无法适配2.3的系统。
第二中方法是通过设置窗口的属性来实现状态栏的显示:
需要得到WindowManager.LayoutParams 然后通过设置flags来达到效果。废话不多说,上代码:
private void showStatusBar(boolean enable) {
if (enable) {//隐藏状态栏
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
} else {//显示状态栏
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
}