enableEdgeToEdge の呼び出しは、真に
下位互換性を持たせるために必要なロジックをカプセル化しているため、
エッジツーエッジ表示を設定するうえで推奨される方法です。エッジツーエッジ表示にする最新の方法については、このガイドではなく Compose と Views のドキュメントをご覧ください。enableEdgeToEdge
推奨はされていませんが、アプリでエッジツーエッジ表示を手動で設定する必要がある場合は 次の手順を行います。
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>
ステータスバーのコンテンツの色を制御するには、
theme.xml の代わりに WindowInsetsControllerCompat API を使用します。これを行うには、
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 が システムバーやディスプレイ カットアウトを避けるように、アプリでインセットを処理する必要があります。インセットを処理する方法については、Compose と Views のドキュメントをご覧ください。