SearchViewを虫眼鏡アイコンタップ以外でも展開したい
やりたいこと
Androidで検索機能を実装するときに利用できるSearchViewというコンポーネントがあります
タップすると検索テキストが入力できて、決定するとリスナーが呼ばれる便利なやつです
SearchViewを何も設定せずに使うと👇のように虫眼鏡アイコンをタップしたときに検索テキストが入力できるようになります
appbarとかでSearchViewを使用する場合の挙動としてはこれでいいと思うのですが、自分は虫眼鏡アイコンより右側の領域をタップした場合もテキスト入力できるようにしたかったのでその方法を探しました
結果
結果は👇になります
方法
テキスト入力領域を展開するという処理を明示的に呼び出せば良いのですが、そういったわかり易い名前のメソッドはSearchViewにはありません
正確にはSearchView#onSearchClickedというメソッドがあるのですが、残念ながらpackage privateです
しかし、SearchView#setIconifiedというメソッドがあり、これがpublicメソッドです
public void setIconified(boolean iconify) { if (iconify) { onCloseClicked(); } else { onSearchClicked(); } }
ということでSearchViewのonClickListenerでsetIconifiedをfalseで呼び出してやると虫眼鏡以外のSearchViewの領域をタップしたときでも検索テキストが展開できます
以上