wie man Android SearchView Text ändert

91

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

Antworten:

164

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);
Khaled Annajar
quelle
3
Auch nach dem Setzen des booleschen Parameters false wird erneut abgefragt. Alle Vorschläge würden helfen.
Raj Trivedi
Ich habe dies getan, aber den 2. Parameter trueso 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?
Nemesisfixx
1
Es ist in Ordnung. Das zweite Argument ist "
Submit
33

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();
Kunemata
quelle
Nicht anzeigen seit write searchView.setIconified (false); Show .
lolo_house
7

Wenn Sie möchten, dass Ihr SearchViewText vorab abgelegt wird, searchView.setQuery(text, false)funktioniert dies nicht sofort. Der Grund ist, wenn SearchViewerweitert 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 SearchViewerweitert 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
}
Max
quelle
6

Das hat bei mir funktioniert

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

    sItem.expandActionView();
    searchView.setQuery("your text", false);
Wowo Ot
quelle
1
einfache, schnelle lebensrettende Lösung!
eren130
0

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.

Putra Hardjono
quelle