概要
EditTextでフォームを表示しているページで、なぜか画面起動時にキーボードが自動で表示されてしまう問題が発生しました。
Android開発は初心者なので、最初は何が起こっているのか分からなかったのですが、要するにフォームにフォーカス(focus)が当たっている状態でした。
フォーカスを当てないようにする方法
方法はいくつかあるようですが、自分は「他の要素にフォーカスを当てる」という方法で解決しました。
具体的には、フォーカス(クリック)されても何も起こらないTextViewなどの要素に、以下のようにandroid:focusable
とandroid:focusableInTouchMode
を設定しました。
<TextView android:id="@+id/text" android:text="テキスト" android:focusable="true" android:focusableInTouchMode="true" />
逆に、画面起動時にキーボードを表示したい場合には、EditTextにこれらの属性を設定すれば良さそうです。