Gibt es eine setText () -Methode für SearchView oder ähnliches? Ich versuche, den Suchtext in der Suchansicht so einzustellen, aber es gibt keine Methode dafür.
searchView.setText(searchToken);
Gibt es eine setText () -Methode für SearchView oder ähnliches? Ich versuche, den Suchtext in der Suchansicht so einzustellen, aber es gibt keine Methode dafür.
searchView.setText(searchToken);
Antworten:
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 und die Suche entweder senden oder den booleschen Parameter nicht verwenden können.
searchView.setQuery(searchToken, false);
true
so eingestellt, dass auch die Abfrage ausgeführt wird. Beachten Sie jedoch, dass das Textfeld leer bleibt, bis die manuelle Fokussierung erfolgt, obwohl die Abfrage gut ausgeführt wird. Wie würde ich sicherstellen, dass der automatisch eingestellte Wert auch automatisch angezeigt wird?
Sie können setQuery()
den Text im Textfeld ändern.
Die setQuery()
Methode löst jedoch den Fokusstatus einer Suchansicht aus, sodass nach dem Aufrufen dieser Methode eine Tastatur auf dem Bildschirm angezeigt wird.
Um dieses Problem zu beheben, rufen Sie einfach die Methode searchView.clearFocus()
after auf setQuery()
, um die Fokussierung aufzuheben, und die Tastatur wird nicht auf dem Bildschirm angezeigt.
Beispiel:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Wenn Sie möchten, dass Ihr SearchView
Text vorab abgelegt wird, searchView.setQuery(text, false)
funktioniert dies nicht sofort. Der Grund ist, wenn SearchView
erweitert wird
searchView.onActionViewExpanded()
wird angerufen, der den von searchView.setText("")
uns festgelegten Text aufruft und löscht.
Die Lösung besteht darin, einen Erweiterungs-Listener festzulegen und den Pre-Fil-Text festzulegen, sobald der SearchView
erweitert ist
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
}
Wenn Sie möchten, dass die Suchansicht erweitert wird und nach dem Tippen auf x (Schließen) auf ein Symbol verkleinert werden kann, haben Sie folgende Möglichkeiten:
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.
HINWEIS: Wenn Sie es erweitern mit:
searchView.onActionViewExpanded()
searchView wird nicht verkleinert, nachdem der Benutzer auf x (Schließen) getippt hat.