EditTextに入力中の文字がソフトキーボードで隠れるのを防ぎたい

Keisuke Kawajiri
URL Memo
Published in
3 min readDec 10, 2019

URLメモでは、レイアウトの下部に広告エリアを設けているのですが、メモ(一番下のEditText)を入力する際に、広告が入力内容に重なってしまうことがあり、入力中の文字が見えなくなることがありました。

この事象について調べてみると、ソフトキーボードの表示設定に起因していることが分かりました。
そこで、本記事はソフトキーボードが入力中の文字を隠してしまう場合の対策について紹介します。
対策方法は、下記サイトを参考にさせて頂きました。

公式サイトでいうと、こちらに設定方法が記載されています。

では対策ですが、マニフェストファイルにandroid:windowSoftInputModeを追加し、adjustPanを設定するだけです。

<manifest ...>
<application ...>
<activity
android:name=".MainActivity"
...
android:windowSoftInputMode="adjustPan"
>
...

adjustPanは、現在のフォーカスがソフトキーボードで隠されることがないように、コンテンツの表示域を調整(パンニング)する設定とのことです。そのため、ユーザーは入力中の内容を常に見ることができます。
他の関連する設定にadjustUnspecifiedとadjustResizeがあります。
adjustResizeは、ソフトキーボードの表示領域を確保して、残りの領域にコンテンツのサイズを調整して表示します。コンテンツはスクロール可能と仮定しているとのことで、スクロールできないと全てのコンテンツが見れなくなります。
adjustUnspecifiedは、windowSoftInputModeのデフォルト設定です。この場合、システムが自動でadjustResizeかadjustPanを決めて動作します。

下記にadjustResize/adjustPanを設定した時の動作結果を載せます。
左側がadjustResize、右側がadjustPanです。

左:adjustResize、右:adjustPan

今回は、ソフトキーボード表示時に下部の広告でEditTextの入力内容が隠れてしまうことから対策の調査が始まりました。
調査したところ、ソフトキーボードの表示設定に起因しており、windowSoftInputModeの設定で対応できることが分かりました。

--

--