Android 4.4 进度对话框的全屏模式

标签 android android-progressbar android-4.4-kitkat

我希望我的应用在运行 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/

相关文章:

android - java.lang.NoClassDefFoundError Firebase和Unity

android - 动画改变 LayoutParams (RelativeLayout)

android - UriMatcher Uri *和#区别

android - 如何使径向/圆形 ProgressBar 不旋转

android - 进度条在 Swiperefreshlayout 中显示更大

android - 水平 ProgressBar 的厚度

android - 4.4以下沉浸式全屏

android - 在 kitkat android 中运行同一应用程序的多个实例

java - 编辑文本删除退格键上的跨度。显示纯文本

android - 如何在 android imageview 中从 dataurl 加载图像?