前言
近期新接手了一个小项目需要设计全屏页面,也就是不展示页面toolbar以及手机状态栏,就是显示电量手机信息那一栏,下面是解决思路历程。
一、踏入误区
刚开始查阅资料,有说在配置清单改变,也有说在Activity设置xml之前配置全屏的,测试了一下全屏是可以全屏,但是页面高度改变信息栏又出来了 ,而且极不稳定,比如页面设置全屏后,点击页面的输入框高度发生变化,就把状态栏给弹出来了。还想着是输入框事件的问题,错了错了。是方法没找对。
二、解决步骤
代码如下(示例):
public void hideStatusBar(Activity activity) {
if (activity == null) return;
Window window = activity.getWindow();
if (window == null) return;
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
WindowManager.LayoutParams lp = window.getAttributes();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
}
window.setAttributes(lp);
}
总结
最好在BaseActivity的setContentView之前调用,不用每个页面都设置也不用改配置清单什么的。