無邊框顯示可讓應用程式在系統資訊列 (狀態列、標題列和導覽列) 後方繪製 UI,提供更身歷其境的使用者體驗。如果指定搭載 Android 15 (API 級別 35) 以上版本的裝置,系統預設會強制執行無邊框模式。
如要在所有 Android 版本上正確顯示無邊框內容,請按照下列設定步驟操作。如果沒有這些步驟,應用程式可能會在系統資訊列後方繪製純色,或無法與螢幕小鍵盤 (IME) 轉場同步顯示內容動畫。
Android 技能
前往 GitHub 查看新增無邊框支援
android skills add edge-to-edge1. 啟用無邊框顯示
如要在舊版 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
詳情請參閱「關於系統資訊列保護」。