我希望我的应用在运行Android 4.4的设备上以全屏模式运行。
我为我的视图设置了View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
,它以全屏模式运行。
问题出在我显示ProgressDialog
时。然后应用程序退出全屏模式,底部的导航按钮显示为agin。
当显示进度对话框时,应用程序是否可以保持全屏模式?
答案 0 :(得分:3)
我在这个主题上找到了一些解决方法:How to maintain the Immersive Mode in Dialogs?感谢Beaver6813的答案(这是GitHub上的示例代码项目)。
基本上,我在ProgressDialog上使用此解决方案的做法是:
将两个变量添加到我的MainActivity类:
private ProgressDialog pDialog;
private Activity context;
在我的onCreate
方法中添加以下代码:
context = this;
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
在我启动ProgressDialog
方法的地方添加以下代码:
pDialog = new ProgressDialog(context);
pDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
pDialog.show();
pDialog.getWindow().getDecorView().setSystemUiVisibility(
context.getWindow().getDecorView().getSystemUiVisibility());
pDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
这应该可以做到!