設定無邊框螢幕

無邊框顯示可讓應用程式在系統資訊列 (狀態列、標題列和導覽列) 後方繪製 UI,提供更身歷其境的使用者體驗。如果指定搭載 Android 15 (API 級別 35) 以上版本的裝置,系統預設會強制執行無邊框模式。

如要在所有 Android 版本上正確顯示無邊框內容,請按照下列設定步驟操作。如果沒有這些步驟,應用程式可能會在系統資訊列後方繪製純色,或無法與螢幕小鍵盤 (IME) 轉場同步顯示內容動畫。

1. 啟用無邊框顯示

如要在舊版 Android 上啟用無邊框模式,請在 Activity.onCreate() 方法中呼叫 enableEdgeToEdge():

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    enableEdgeToEdge()
    // ...
}

根據預設,enableEdgeToEdge() 會將系統資訊列設為透明,但在三按鈕操作模式下,會對導覽列套用半透明遮罩,提高對比度。系統圖示和 scrim 的顏色會根據系統的淺色或深色主題調整。

2. 設定 windowSoftInputMode

在 Activity 的 AndroidManifest.xml 項目中設定 android:windowSoftInputMode="adjustResize"。這項設定可讓應用程式接收 IME 嵌入,以便在螢幕小鍵盤顯示或消失時,使用邊框間距調整版面配置。

<!-- In your AndroidManifest.xml file: -->
<activity
  android:name=".ui.MainActivity"
  android:label="@string/app_name"
  android:windowSoftInputMode="adjustResize"
  android:theme="@style/Theme.MyApplication"
  android:exported="true">
  ...
</activity>

3. 使用插邊處理重疊

啟用無邊框模式後,應用程式的部分內容和 UI 元素可能會繪製在系統資訊列後方。為避免重要或互動元素遭系統資訊列遮蔽,或與系統手勢重疊,您需要處理插邊。

插邊是指與系統 UI 或系統手勢重疊的畫面部分。在無邊框顯示中,主要應考量的插邊類型包括:

  • 系統資訊列插邊:代表系統資訊列顯示的區域。使用這些屬性,可避免 UI 遭到系統資訊列遮蓋。
  • 螢幕凹口插邊:代表裝置螢幕上實體凹口 (例如相機凹口) 所在的區域。

在 Compose 中,您可以使用尺規、邊框間距修飾符或插邊大小修飾符來處理插邊。如需詳細指南,請參閱「關於視窗插邊」。

進階主題

如需更進階的無邊框用途,請參考下列做法。

沉浸模式

某些內容 (例如影片或地圖) 適合採用全螢幕沉浸式體驗,隱藏系統資訊列。您可以使用 WindowInsetsControllerCompat 隱藏系統資訊列:

val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)

// Hide the system bars.
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())

// Show the system bars.
windowInsetsController.show(WindowInsetsCompat.Type.systemBars())

系統資訊列顏色和圖示

採用無邊框設計時,應用程式的背景可能會顯示在系統資訊列後方,因此您可能需要調整系統資訊列圖示顏色,提高對比度。

如要將狀態列圖示變更為淺色或深色,請使用 WindowInsetsControllerCompat:

// Set status bar icons to dark.
WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = true

// Set status bar icons to light.
WindowCompat.getInsetsController(window, window.decorView)
    .isAppearanceLightStatusBars = false

系統資訊列保護

雖然 enableEdgeToEdge() 提供預設的透明或半透明系統資訊列,但您可能需要自訂。請參閱 Android 系統資訊列設計指南和無邊框設計指南,決定何時使用透明或半透明資訊列。

如要將三按鈕導覽列設為全透明,而非半透明,可以停用對比度強制執行功能:

window.isNavigationBarContrastEnforced = false

詳情請參閱「關於系統資訊列保護」。