【发布时间】:2021-07-26 20:19:49
【问题描述】:
根据请求,我正在尝试使 Android 应用程序全屏显示。我关注了Enable fullscreen mode,但是在显示对话框时,导航菜单(主页按钮、后退按钮等)会在显示对话框时再次显示。有没有办法禁用它?
【问题讨论】:
标签: android dialog fullscreen android-fullscreen
根据请求,我正在尝试使 Android 应用程序全屏显示。我关注了Enable fullscreen mode,但是在显示对话框时,导航菜单(主页按钮、后退按钮等)会在显示对话框时再次显示。有没有办法禁用它?
【问题讨论】:
标签: android dialog fullscreen android-fullscreen
对话框窗口默认是可聚焦的,可聚焦的窗口会导致退出全屏模式。
对于解决方法,您可以尝试将FLAG_NOT_FOCUSABLE 标志设置为您的对话框,如here 所述,但请注意系统对话框(如 ANR)仍会导致退出。
【讨论】:
分享我的解决方案,基于link@ceribadev分享的答案:
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
// Here's the magic..
try {
// Set the dialog to not focusable (makes navigation ignore us adding the window)
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
// Show the dialog!
dialog.setOnShowListener(dialogInterface -> {
// Set the dialog to immersive
dialog.getWindow().getDecorView().setSystemUiVisibility(dialog.getOwnerActivity().getWindow().getDecorView().getSystemUiVisibility());
// Clear the not focusable flag from the window
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
});
} catch (Exception e) {
e.printStackTrace();
}
return dialog;
}
【讨论】: