手動設定無邊框螢幕

您可以呼叫 enableEdgeToEdge。 這對大多數應用程式來說應該已足夠。本指南說明如何啟用 則可在不使用 enableEdgeToEdge 的情況下使用

讓應用程式以全螢幕顯示。

使用 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);
}

變更系統資訊列的顏色

在無邊框的版面配置中運作時,應用程式需要變更 使用系統列來允許顯示下方的內容。在應用程式之後 系統就會處理使用者的所有視覺保護措施 介面與按鈕模式中的介面。

  • 手勢操作模式:系統會在 系統列的內容會根據後方的內容 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件在下例中,導覽列的控點變更為 暗色位於淺色內容上方,位於淺色內容上方時變成淺色 例如深色內容
,瞭解如何調查及移除這項存取權。
圖 1.手勢操作模式的色彩變更 模式。
  • 按鈕模式:系統會套用半透明 scrim 在系統資訊列 (API 級別 29 以上版本) 或透明系統後方 bar (適用於 API 級別 28 以下版本)。
,瞭解如何調查及移除這項存取權。
顯示半透明系統資訊列的圖片
圖 2.在系統資訊列後方加上半透明的薄紗。
  • 狀態列內容顏色:控制狀態列內容的顏色,例如 顯示位置和圖示
,瞭解如何調查及移除這項存取權。
圖片顯示狀態列的內容顏色
圖 3.狀態列內容顏色。

您可以編輯 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>

您可以使用 WindowInsetsController API 但我們強烈建議您使用支援資料庫 WindowInsetsControllerCompat。 。您可以使用 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);