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);

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);

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

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
}

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);

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.