试了网上很多的方法,都没什么用,最后抄的 google 开发者网站上的代码
public static void hideSystemUI(Window window) {
// Enables regular immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
View decorView = window.getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
1.dialogfragment 里面使用
@Override
public void onResume() {
super.onResume();
hideSystemUI();
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View decorView = getDialog().getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener(
visibility -> {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
// TODO: The system bars are visible. Make any desired
hideSystemUI();
}
});
}
2.dialog 里面使用
@Override
public void show() {
super.show();
StatusBarUtil.hideSystemUI(getWindow());
}
3.注意:window 可能为空的!!!window 可能为空的!!!window 可能为空的!!!