Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Android開発】画面起動時にキーボードが自動で起動するのを防ぐ

概要

EditTextでフォームを表示しているページで、なぜか画面起動時にキーボードが自動で表示されてしまう問題が発生しました。

Android開発は初心者なので、最初は何が起こっているのか分からなかったのですが、要するにフォームにフォーカス(focus)が当たっている状態でした。

フォーカスを当てないようにする方法

方法はいくつかあるようですが、自分は「他の要素にフォーカスを当てる」という方法で解決しました。

具体的には、フォーカス(クリック)されても何も起こらないTextViewなどの要素に、以下のようにandroid:focusableandroid:focusableInTouchModeを設定しました。

<TextView
  android:id="@+id/text"
  android:text="テキスト"
  android:focusable="true"
  android:focusableInTouchMode="true" />

逆に、画面起動時にキーボードを表示したい場合には、EditTextにこれらの属性を設定すれば良さそうです。

参考にしたサイト

https://appdev.blitz-time.com/entry/2019/09/07/081647

https://programming-cafe.com/programming/android-%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88/not-focus-on-edittext/