無邊框顯示功能可讓應用程式在系統資訊列 (狀態列、說明文字列和導覽列) 後方繪製 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() 會將系統資訊列設為透明,但如果是三按鈕操作模式,則會將半透明的遮罩套用至導覽列,以提升對比度。系統圖示和半透明遮罩的顏色會配合系統的淺色或深色主題調整。
2. 設定 windowSoftInputMode
在活動的 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
詳情請參閱「關於系統資訊列保護機制」。