2016-04-30 87 views
2

我在onResume设置全屏沉浸模式下为我的Android应用程序是这样的:全屏沉浸模式的Android

@Override 
    public void onResume() { 
    super.onResume(); 
    final View decorView = getWindow().getDecorView(); 
    decorView.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 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_IMMERSIVE); 
    decorView.setOnSystemUiVisibilityChangeListener 
      (new View.OnSystemUiVisibilityChangeListener() { 
       @Override 
       public void onSystemUiVisibilityChange(int visibility) { decorView.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 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_IMMERSIVE); 

       } 
      }); 
     } 

OnSystemUiVisibilityChangeListener()也实现立即隐藏酒吧柜面用户不向内轻扫。由于应用程序将在自助终端设备上运行,因此确保用户无法访问主页/后退或任何系统信息很重要。

上述工作正常,但是当显示DialogFragment时,系统和导航栏将变为可见,直到对话框可见。我怎样才能确保酒吧无论如何都保持隐藏。此外,是否有更好的方式来处理全屏模式,并完全禁止访问系统,导航,动作,应用程序栏。

编辑: 我设法通过我的对话框类下面的代码隐藏对话框上的酒吧:

@Override 
public void onStart() { 
    super.onStart(); 
    Window window = getDialog().getWindow(); 
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    int uiOptions = 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 
      | View.SYSTEM_UI_FLAG_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_IMMERSIVE; 
    window.getDecorView().setSystemUiVisibility(uiOptions); 
} 

但有一个短暂的时间,其中的条滑离视图前得到明显。我怎样才能让酒吧根本不显示。

+0

试试这个解决方案。希望这会起作用。 http://stackoverflow.com/a/32925108/5124050 –

回答

1

那该怎么办? 。

requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
WindowManager.LayoutParams.FLAG_FULLSCREEN); 
1

使用这种内部乌尔的onClick方法...

dialog.getWindow()setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); dialog.show();

//Set the dialog to immersive 
    dialog.getWindow().getDecorView().setSystemUiVisibility(
      MyActivity.this.getWindow().getDecorView().getSystemUiVisibility()); 

    //Clear the not focusable flag from the window 
    dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);