手動設定無邊框螢幕

呼叫 enableEdgeToEdge 會封裝真正回溯相容所需的邏輯,因此建議您使用這種方式設定無邊框螢幕。如要瞭解如何使用 enableEdgeToEdge 以新式方式實現無邊框設計,請參閱 ComposeViews 說明文件,而非本指南。

雖然不建議這麼做,但如果應用程式必須手動設定無邊框螢幕,請按照下列步驟操作:

  1. 呼叫 WindowCompat.setDecorFitsSystemWindows(window, false)
  2. 將系統資訊列設為透明。
  3. 處理插邊。

全螢幕顯示應用程式

使用 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 遭到系統資訊列和螢幕凹口遮蔽。如要瞭解如何處理插邊,請參閱「撰寫」和「檢視畫面」說明文件。