我希望我的应用在运行 Android 4.4 的设备上以全屏模式运行。
我已经设置了View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
用于我的 View ,它以全屏模式运行。
问题是当我显示 ProgressDialog
时。然后应用程序退出全屏模式,底部的导航按钮再次可见。
显示进度对话框时应用程序是否可以保持全屏模式?
最佳答案
我在这个主题上找到了一些解决方法: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);
这应该可以解决问题!
关于Android 4.4 进度对话框的全屏模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244883/