SearchViewまたはそのようなもののためのsetText()メソッドはありますか?このようにsearchViewで検索テキストを設定しようとしていますが、このような方法はありません。
searchView.setText(searchToken);
回答:
不思議に思ったところ、setView()という名前のAPIにsearchViewテキストを設定するメソッドがあり、ブール値パラメーターを使用しないで検索を送信することを選択できることがわかりました。
searchView.setQuery(searchToken, false);
true
を実行しましたが、クエリも実行されるように2番目のパラメーターをに設定しましたが、クエリは適切に実行されますが、手動でフォーカスが与えられるまでテキストボックスは空白のままです。自動設定値も自動的に表示されるようにするにはどうすればよいですか?
を使用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
です。
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
}
searchViewを拡張し、ユーザーがx(閉じる)をタップした後、それをアイコンに縮小できる場合は、次のようにします。
searchView.isIconified = false // Expand it
searchView.setQuery("your text here", false) // true if you want to submit, otherwise false
searchView.clearFocus() // so the keyboard is not show up.
注:次を使用して展開する場合:
searchView.onActionViewExpanded()
ユーザーがx(閉じる)をタップしてもsearchViewは元に戻りません