webentwicklung-frage-antwort-db.com.de

so ändern Sie den Android SearchView-Text

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);
71
Khaled Annajar

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);
140
Khaled Annajar

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();
22
kunemata

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
}
4
Max

das hat bei mir funktioniert

    MenuItem sItem = menu.findItem(R.id.search);
    SearchView searchView = (SearchView) sItem.getActionView();

    sItem.expandActionView();
    searchView.setQuery("your text", false);
1
Wowo Ot