【问题标题】:Android 4.4 full-screen mode for Progress DialogAndroid 4.4 全屏模式的进度对话框
【发布时间】:2013-12-13 05:41:51
【问题描述】:

我希望我的应用在运行 Android 4.4 的设备上以全屏模式运行。

我为我的视图设置了View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION,它以全屏模式运行。

问题是当我显示ProgressDialog 时。然后应用退出全屏模式,底部的导航按钮再次可见。

当显示进度对话框时,应用程序是否可以保持全屏模式?

【问题讨论】:

  • 一旦窗口失去焦点,沉浸式模式就会被移除,我找不到任何解决方法。你能找到任何答案吗?

标签: android android-progressbar android-4.4-kitkat


【解决方案1】:

我在这个主题上找到了一些解决方法: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);    
    

这应该可以解决问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多