全屏代码
默认全屏
public static void hideNavigationBar(Window window){
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
window.getDecorView().setOnSystemUiVisibilityChangeListener(visibility -> {
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
//布局位于状态栏下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN |
//隐藏导航栏
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
uiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
window.getDecorView().setSystemUiVisibility(uiOptions);
});}
默认全屏 plus
存在2个页面的情况下,A页面在下层,B页面在上层但是半透明,同时B包含一个输入框
如果想要输入法弹出半屏,B页面被挤压的同时,会导致A同时被挤压,如果A设置了属性android:windowSoftInputMode="adjustNothing"虽然不会被挤压,但是会导致忽略导航栏高度导致缺失一块
以下代码解决这个问题,可以使得A页面设置android:windowSoftInputMode="adjustNothing"且不会造成缺失
public static void hideNavigationBar(Window window, View rootView){
hideNavigationBar(window);
WindowCompat.setDecorFitsSystemWindows(window, false);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
WindowInsetsControllerCompat windowInsetsController = ViewCompat.getWindowInsetsController(rootView);
windowInsetsController.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars());
}