2015-05-07 55 views
0

我已成功啓用沉浸式粘滯模式,但不再顯示操作欄。在IMMERSIVE_STICKY模式下顯示ActionBar

我將此添加到我的ActionBarActivity得到系統/導航欄消失和重新出現在刷卡從側面:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     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_STICKY); 

    } 
} 

和讀取文檔指出,我應該在onCreate方法添加以下代碼。我發現onSystemUiVisibilityChange()例程只是在UI再次可見時才被調用。當應用程序以全屏模式啓動時,我確實看到它被調用,所以它隱藏()了actionBar。但是,show()永遠不會被調用。

 decorView.setOnSystemUiVisibilityChangeListener 
       (new View.OnSystemUiVisibilityChangeListener() { 
        @Override 
        public void onSystemUiVisibilityChange(int visibility) { 
         // Note that system bars will only be "visible" if none of the 
         // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set. 
         if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) { 
          // The system bars are visible. 
          ActionBar actionBar = getSupportActionBar(); 
          actionBar.show(); 
         } else { 
          // The system bars are NOT visible. 
          ActionBar actionBar = getSupportActionBar(); 
          actionBar.hide(); 
         } 
        } 
       }); 

那麼,如何在系統界面重新出現時得到回調?

我對NVIDIA SHIELD平板電腦的Android 5

+0

這個bug出現有關,但完全無幫助。關於這個問題什麼是「過時的」?爲什麼這可以關閉? https://code.google.com/p/android/issues/detail?id=66702 –

+0

完整的代碼在這裏,如果它有幫助:https://github.com/rogerallen/GridStrument/blob/af50bbc840438f885e489e09fd05c44432a4b130/app/src/主/ JAVA/COM /的Gmail/rallen/gridstrument/MainActivity.java#L76 –

回答

1

問題在於你使用SYSTEM_UI_FLAG_IMMERSIVE_STICKY的。如果你看看開發人員文件身臨其境的模式,它指出:

注意標誌的「粘性」的版本不會觸發任何 聽衆,因爲系統暫時酒吧在此模式下顯示的是在 瞬態

完整的參考可以在這裏找到: https://developer.android.com/training/system-ui/immersive.html