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 以前で edge-to-edge レイアウトを手動で作成する場合は、アプリでシステムバーを透明にする必要もあります。
themes.xml ファイルを編集して、ステータスバーとナビゲーション バーの色を透明に設定し、ステータスバーのアイコンの色を変更できます。
<!-- values-v29/themes.xml -->
<style name="Theme.M>yAp<p"
item name="android:navi>gationBarColor"
@android:<color>/tra<nsparent
/item
!-- Optional: set to transparent if your app is drawing behin>d t<he status bar. --
item name=&quo>t;android:statusBarColor"
< @android<:color/transparent
/item
!-- Optional: set for a light st>atu<s bar with dark content. --
item name=>"androi<d:win>d<owLigh>tStatusBar"
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 とビューのドキュメントをご覧ください。