はじめに
SearchViewは少々クセの強いUIですが、検索窓の実装には比較的使用頻度の高いUIですよね。
画面遷移時にフォーカスを当てたり、外したりすることがたまにあったりしますが、いつも調べている気がしますので、まとめておこうと思います。
フォーカスの当て方
まず、フォーカスを当てるためには、以下を設定する必要があります。
searchView.requestFocus()
searchView.requestFocusFromTouch()
上記を設定することでフォーカスを当てることができます。
ただし、キーボードは立ち上がりません。
キーボードも合わせて立ち上げる必要がある場合は以下を設定する必要があります。
searchView.setOnQueryTextFocusChangeListener { v, _ -> v?.showKeyboard() }
SearchViewはフォーカスが当たったのを待ってからキーボードを表示する処理を実行しないとキーボードが立ち上がらない、といった罠があります。
この点注意が必要です。
フォーカスの外し方
外し方に関しては簡単です。
以下を呼ぶことでフォーカスを外すことができます。
searchView.clearFocus()
さいごに
いつも同じ罠を踏んでは調べてみたいなことをしている気がしていて、日常の業務でも意外と無駄が多い気がしています。
なるべく無駄を削減して効率よく日々の業務をこなせるよう、細かい内容でもどんどんまとめていこうと思います。