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を適用しなければそのままなのが驚きでした。