はじめに
Android15 から edge-to-edge がデフォルトになり、意図しない挙動になっていないかの確認を行ってみました。
確認は、弊社で公開している 家計簿 アプリで行いました。
変更内容の確認
変更点としては、以下になります。
-
targetSdkを35に変更するとedge-to-edgeが Android15 で対応していないアプリでも適用されること -
M3 を適用している場合、自動的に
Insetsを適用するため、特段対応が不要であること -
M2 を適用している &
edge-to-edge対応していない場合、自動的にInsetsが適用されないため、手動での対応が必要であること
実際に動かしたときの確認
家計簿 は、M3 を適用してアプリを作成しているため、自動で適用されるはずですが、確認していきます。
確認は、以下 OS のエミュレーターで行いました。
- Android14
- Android15
targetSdk 34 で動かしたとき
| Android14 | Android15 |
|---|---|
![]() |
![]() |
targetSdk を上げていないため、挙動に差異はありませんでした。
※ StatusBar の大きさに違いはありますが、これは 実機の Android15 では発生していないため、エミュレーターの問題です。
targetSdk 35 で動かしたとき
| Android14 | Android15 |
|---|---|
![]() |
![]() |
M3 を適用しているため、対応不要で edge-to-edge が適用されていました。
ただし、Android15 で以下の気になるところがありました。
-
BottomSheetがNavigation barの領域分下がるため、閉じた後に開くことがしづらい -
adjustResizeを設定しているにも関わらず、ソフトウェアキーボードでアプリの内容が隠れる
これは対応が必要のため、次のセクションで説明します。
-
Status Barの情報が白地に白文字でライトモード時に見えなくなっている
これは、 OS 上の問題なのかもしれませんので、もう少し待ってみます。
BottomSheetが下がることソフトウェアキーボード内にアプリ内容が隠れることについて
If your app is using views and BottomSheet, SideSheet or custom containers, apply padding using ViewCompat.setOnApplyWindowInsetsListener. For RecyclerView, apply padding using this listener and also add clipToPadding="false".
上記から、WindowInset が自動で適用されない模様で、 Compose では以下を追加して対応します。
※ ドキュメントを閲覧した限り、そのように解釈しましたが、もし異なっていましたらコメント等でご指摘ください。
Box(
modifier = modifier = Modifier.safeDrawingPadding(),
...
) {
safeDrawingPadding は、ステータスバー、ナビゲーションバー、IMEのスペース分、適用されます。
変更したところ以下のように対応できました。
閉じているときの BottomSheet
| 対応前 | 対応後 |
|---|---|
![]() |
![]() |
ソフトウェアキーボード
| 対応前 | 対応後 |
|---|---|
![]() |
![]() |
まとめ
今回確認したアプリでは、 M3 を使用していたため、特段大きな変更がないため、修正工数もほとんどかからないことがわかりました。
ですが、 M2 を使用している場合は、手動で Insets を適用する必要があるため、一度 targetSdk を上げてみると良いかと思います。
特に大規模なアプリの場合は、対応に工数がかかると思いますので、早めに確認した方が良さそうです。







