Gibt es eine setText () - Methode für SearchView oder ähnliches? Ich versuche, den Suchtext in searchView so zu setzen, aber es gibt keine Methode dafür.
searchView.setText(searchToken);
Nachdem ich mich gefragt und versucht hatte, fand ich heraus, dass es in der API eine Methode namens setQuery () gibt, mit der Sie den searchView-Text festlegen. Sie können wählen, ob Sie die Suche absenden oder den booleschen Parameter nicht verwenden.
searchView.setQuery(searchToken, false);
Sie können setQuery()
verwenden, um den Text im Textfeld zu ändern.
Die setQuery()
-Methode löst jedoch den Fokusstatus einer Suchansicht aus, sodass eine Tastatur auf dem Bildschirm angezeigt wird, nachdem diese Methode aufgerufen wurde.
Um dieses Problem zu beheben, rufen Sie einfach die searchView.clearFocus()
-Methode nach der setQuery()
-Methode auf, um die Unschärfe zu bestimmen.
Beispiel:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Wenn Sie möchten, dass Ihr SearchView
mit einem Text vorab abgelegt wird, funktioniert searchView.setQuery(text, false)
nicht sofort. Der Grund ist, wenn SearchView
erweitert wird
searchView.onActionViewExpanded()
get called which ruft searchView.setText("")
auf und löscht den von uns gesetzten Text.
Die Lösung besteht darin, einen Listener zum Erweitern festzulegen und den Text vor dem Ablegen festzulegen, sobald SearchView
erweitert wurde
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
}
das hat bei mir funktioniert
MenuItem sItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) sItem.getActionView();
sItem.expandActionView();
searchView.setQuery("your text", false);