呼叫 enableEdgeToEdge
會封裝真正回溯相容所需的邏輯,因此建議您使用這種方式設定無邊框螢幕。如要瞭解如何使用 enableEdgeToEdge
以新式方式實現無邊框設計,請參閱 Compose 和 Views 說明文件,而非本指南。
雖然不建議這麼做,但如果應用程式必須手動設定無邊框螢幕,請按照下列步驟操作:
- 呼叫
WindowCompat.setDecorFitsSystemWindows(window, false)
。 - 將系統資訊列設為透明。
- 處理插邊。
全螢幕顯示應用程式
使用 WindowCompat.setDecorFitsSystemWindows(window, false)
在系統資訊列後方配置應用程式,如下列程式碼範例所示:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) }
Java
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WindowCompat.setDecorFitsSystemWindows(getWindow(), false); }
變更系統列的顏色
為 Android 14 以下版本手動建立無邊框版面配置時,應用程式也必須將系統資訊列設為透明。
您可以編輯 themes.xml
檔案,將狀態列和導覽列的顏色設為透明,並變更狀態列圖示顏色。
<!-- values-v29/themes.xml -->
<style name="Theme.MyApp">
<item name="android:navigationBarColor">
@android:color/transparent
</item>
<!-- Optional: set to transparent if your app is drawing behind the status bar. -->
<item name="android:statusBarColor">
@android:color/transparent
</item>
<!-- Optional: set for a light status bar with dark content. -->
<item name="android:windowLightStatusBar">
true
</item>
</style>
您可以使用 WindowInsetsControllerCompat
API,而非 theme.xml
,控制狀態列的內容顏色。如要這麼做,請使用 setAppearanceLightNavigationBars()
函式,傳遞 true
將導覽列前景顏色變更為淺色,或傳遞 false
還原為預設顏色。
Kotlin
val windowInsetsController = ViewCompat.getWindowInsetsController(window.decorView) windowInsetsController?.isAppearanceLightNavigationBars = true
Java
WindowInsetsControllerCompat windowInsetsController = ViewCompat.getWindowInsetsController(getWindow().getDecorView()); if (windowInsetsController == null) { return; } windowInsetsController.setAppearanceLightNavigationBars(true);
處理插邊
最後,應用程式必須處理插邊,以免重要 UI 遭到系統資訊列和螢幕凹口遮蔽。如要瞭解如何處理插邊,請參閱「撰寫」和「檢視畫面」說明文件。