come cambiare il testo di Android SearchView


91

Esiste un metodo setText () per SearchView o qualcosa del genere? Provo a impostare il testo di ricerca nel searchView in questo modo, ma non esiste un metodo per questo.

searchView.setText(searchToken);

Risposte:


164

Dopo essermi chiesto e provato ho scoperto che c'è un metodo nell'API chiamato setQuery () che imposti il ​​testo di searchView e puoi scegliere di inviare la ricerca o meno utilizzando il parametro booleano.

searchView.setQuery(searchToken, false);

3
Anche dopo aver impostato il parametro booleano false, interroga di nuovo. Qualsiasi suggerimento sarebbe utile.
Raj Trivedi

L'ho fatto, ma impostando il secondo parametro su in truemodo che anche la query venga eseguita, ma si noti che sebbene la query venga eseguita correttamente, la casella di testo rimane vuota, fino a quando non viene data manualmente lo stato attivo. Come posso assicurarmi che anche il valore impostato automaticamente venga visualizzato automaticamente?
nemesisfixx

1
va bene. il secondo argomento è "invia"
roghayeh hosseini

33

Puoi usare setQuery() per modificare il testo nella casella di testo.

Però, setQuery() metodo attiva lo stato di attivazione di una visualizzazione di ricerca, quindi una tastiera verrà visualizzata sullo schermo dopo che questo metodo è stato richiamato.

Per risolvere questo problema, basta chiamare il metodo searchView.clearFocus()dopo setQuery()per sbloccarlo e la tastiera non verrà visualizzata sullo schermo.

Esempio:

String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();

Non mostrato dalla scrittura searchView.setIconified (false); mostrare .
lolo_house

7

Se vuoi pre-compilare il tuo SearchViewtesto con del testo searchView.setQuery(text, false)non funzionerebbe immediatamente. il motivo è quando SearchViewviene espanso

searchView.onActionViewExpanded()

essere chiamato che chiama searchView.setText("")e cancella qualsiasi testo che abbiamo impostato.

La soluzione è impostare un listener di espansione e impostare il testo del pre-file una volta SearchViewespanso

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

Questo è ciò che ha funzionato per me

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

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

1
soluzione salvavita semplice e veloce!
eren130

0

Se vuoi che searchView si espanda e può essere ridotto a un'icona dopo che l'utente tocca x (chiudi), il modo è:

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.

NOTA: se lo espandi utilizzando:

searchView.onActionViewExpanded()

searchView non si restringe dopo che l'utente tocca x (chiudi)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.