SearchView用のsetText()メソッドなどがありますか? searchViewで検索テキストをこのように設定しようとしましたが、このような方法はありません。
searchView.setText(searchToken);
疑問に思って試してみたところ、searchViewテキストを設定するsetQuery()という名前のメソッドがAPIにあることがわかりました。ブールパラメーターを使用しないか、検索を送信するかを選択できます。
searchView.setQuery(searchToken, false);
setQuery()
を使用して、テキストボックス内のテキストを変更できます。
ただし、setQuery()
メソッドは検索ビューのフォーカス状態をトリガーするため、このメソッドが呼び出されるとキーボードが画面に表示されます。
この問題を解決するには、searchView.clearFocus()
メソッドの後にsetQuery()
メソッドを呼び出してフォーカスを解除すると、キーボードが画面に表示されなくなります。
例:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
SearchView
にテキストを事前に入力する場合、searchView.setQuery(text, false)
はそのままでは機能しません。その理由は、SearchView
が展開されるときです
searchView.onActionViewExpanded()
searchView.setText("")
を呼び出して、設定したテキストをすべてクリアします。
解決策は、SearchView
が展開されたら、Expandリスナーを設定し、pre-filテキストを設定することです
override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.main, menu)
val searchView = menu.findItem(R.id.action_search).actionView as SearchView
menu.findItem(R.id.action_search).setOnActionExpandListener(object : MenuItem.OnActionExpandListener {
override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
// it is important to call this before we set our own query text.
searchView.onActionViewExpanded()
searchView.setQuery("Prefil Text", false)
return true
}
override fun onMenuItemActionCollapse(item: MenuItem?) = true
})
return true
}
これは私のために働いたものです
MenuItem sItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) sItem.getActionView();
sItem.expandActionView();
searchView.setQuery("your text", false);