アプリ開発備忘録

PlayStationMobile、Android、UWPの開発備忘録

Android10以下でComposeのModifier.imePadding()が効かない時

Android10以下のComposeで Modifier.imePadding() が効かない事があります。

Issueが既に立っていて、調べた原因は以下に書いたので、そちらを見てもらっても良いです。
https://issuetracker.google.com/issues/266331465

修正方法

Activityに

android:windowSoftInputMode="adjustResize"

android:windowSoftInputMode="adjustPan"

を設定する事です。

調査内容

Modifier.imePadding() からコードを辿ると、WindowInsetsCompatに辿り着きます。
ここにIMEのInsetを取得するコードがあり、この部分に答えが書いてありました。 https://cs.android.com/androidx/platform/frameworks/support/+/312eb9f1ddece3a18317f18515a877e0e745cb2c:core/core/src/main/java/androidx/core/view/WindowInsetsCompat.java;l=994-1014

感想

これを設定したら、キーボードが表示された時にActivity、Viewの表示範囲が問答無用で小さくなるものと思っていましたが、実際はimePaddingを適用しなければそのままなのが驚きでした。