Open1

キーボードでUIが隠れる問題を解決したい

るるすたるるすた
Googleのクローズドテストに困っている方へ

もし、個人開発者様でせっかく作ったアプリがGoogle Play Consoleの
クローズドテストの要件に阻まれ、がっかりされている方がいらっしゃいましたら
ぜひ以下をご覧いただきDiscodeのコミュニティに参加することをお勧めします!
https://zenn.dev/android_tester/articles/510e99718de271

問題の本質

現状、LazyColumn や Column を使って各画面を構築。
keyboard を開いたときに 自動でスクロールしてくれないため、
入力欄が隠れてしまう 状況が発生。

修正案→Modiferの便利なメソッドを利用

LazyColumnを使っている場合→imePadding()追加

Modifierに「キーボードの分だけ余白を追加する」imePadding()を追加します。

@Composable
fun CanvasSec(
    modifier: Modifier = Modifier,
    viewModel: PromptViewModel,
    uiState: PromptUiState,
) {
    LazyColumn(
        modifier = modifier
            .padding(dimensionResource(R.dimen.p_small))
            .fillMaxSize()
+            .imePadding()
    ){
・・・・・

Columnを使っている場合

Modifierに以下を追加。

  • verticalScroll():画面をスクロース
  • imePadding():キーボード分だけ余白を追加
Column(
    modifier = modifier
        .padding(dimensionResource(R.dimen.p_small))
+        .verticalScroll(rememberScrollState())
+        .imePadding()
)

設定の結果