はじめに
久しぶりにSearchViewを使った実装を行うことになり作業進めていたのですが、使用頻度の低いUIだと暫く時間が空くと忘れがちですよね。
そこでSearchViewを使う際によく使う機能を備忘録的にまとめておこうと思います。
入力された文字列を取得するイベント
文字に変化があった場合のイベントや検索ボタンが押された時のイベントで何か行う場合にはsetOnQueryTextListenerを設定する必要があります。
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextChange(newText: String): Boolean {
// text changed
return false
}
override fun onQueryTextSubmit(query: String): Boolean {
// submit button pressed
return false
}
})
onQueryTextChangeが入力文字が変更された時、onQueryTextSubmitが検索ボタンを実行された時です。
ほぼほぼ使うのはonQueryTextSubmitだと思いますが、入力文字を監視したい場合などはonQueryTextChangeを使うといいと思います。
フォーカスの変化を拾うイベント
例えばSearchViewにフォーカスが当たったら検索履歴を出して、外れたら非表示にする。
こんな感じのUIを実現したい場合にフォーカスの変化を取得する必要があるかと思いますが、フォーカスの変化を拾うには以下を実装します。
searchView.setOnQueryTextFocusChangeListener { view, hasFocus ->
// Focus changed
}
設定されている文字列の取得
現在設定されている文字列は、以下で取得可能です。
val text = searchView.query
検索バーが常に表示された状態にする
SearchViewは基本虫眼鏡アイコンだけが見えた状態で検索欄は非表示がデフォルトです。
検索欄が常に見えた状態とするためには、以下を設定する必要があります。
android:iconifiedByDefault="false"
Hintの文言を設定する
EditTextのように入力前のヒントを設定したい場合は以下設定することで対応可能です。
android:queryHint="ヒント"
さいごに
比較的使用頻度の低いUIは毎回忘れがちですよね。
間が空いた後でもスムーズに対応できるよう、なるべくまとめておこうと思います。