全屏代码

默认全屏

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());  
}