EditTextに入力中の文字がソフトキーボードで隠れるのを防ぎたい
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です。
今回は、ソフトキーボード表示時に下部の広告でEditTextの入力内容が隠れてしまうことから対策の調査が始まりました。
調査したところ、ソフトキーボードの表示設定に起因しており、windowSoftInputModeの設定で対応できることが分かりました。