2016-04-30 47 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); 
相關問題