隱藏導覽列

本課程將說明如何隱藏導覽列,這是 Android 4.0 (API 級別 14) 中引入的項目。

雖然本課程的重點在於隱藏導覽列,但您仍應將應用程式設計為同時隱藏狀態列,如隱藏狀態列所述。隱藏導覽列和狀態列的同時,仍保持易於存取的項目可讓內容佔滿整個顯示空間,藉此提供更身歷其境的使用者體驗。

系統列

圖 1 導覽列。

隱藏導覽列

您可以使用 SYSTEM_UI_FLAG_HIDE_NAVIGATION 旗標隱藏導覽列。下列程式碼片段會同時隱藏導覽列和狀態列:

Kotlin

window.decorView.apply {
    // Hide both the navigation bar and the status bar.
    // SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
    // a general rule, you should design your app to hide the status bar whenever you
    // hide the navigation bar.
    systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}

Java

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

請注意:

  • 使用這種方法時,輕觸畫面上的任何位置會使導覽列 (和狀態列) 重新顯示,並持續顯示。使用者互動會導致標記遭到清除。
  • 清除旗標後,如要再次隱藏長條,應用程式需要重設標記。請參閱「回應 UI 瀏覽權限變更」的討論,瞭解如何監聽 UI 瀏覽權限變更,以便應用程式做出相應回應。
  • 設定 UI 旗標的位置會有差異。如果在活動的 onCreate() 方法中隱藏系統資訊列,而且使用者按下主畫面按鈕,系統列就會重新顯示。使用者重新開啟活動時,系統不會呼叫 onCreate(),因此系統資訊列仍會顯示。如果您希望系統 UI 變更能在使用者來回瀏覽活動時保留,請在 onResume()onWindowFocusChanged() 中設定 UI 標記。
  • 只有用來呼叫方法的檢視畫面會顯示,setSystemUiVisibility() 方法才會生效。
  • 離開檢視畫面會導致系統清除使用 setSystemUiVisibility() 設定的標記。

讓內容顯示在導覽列後面

在 Android 4.1 以上版本中,您可以將應用程式內容設為顯示在導覽列後方,這樣內容就不會隨著導覽列隱藏及顯示而調整大小。方法是使用 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION。您可能也需要使用 SYSTEM_UI_FLAG_LAYOUT_STABLE,協助應用程式維持穩定的版面配置。

使用這個方法時,您必須負責確保應用程式 UI 的重要部分不會被系統資訊列遮住。如要進一步瞭解本主題,請參閱「 隱藏狀態列」課程。