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);
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:
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);
true
modo 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?
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();
Se vuoi pre-compilare il tuo SearchView
testo con del testo searchView.setQuery(text, false)
non funzionerebbe immediatamente. il motivo è quando SearchView
viene 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 SearchView
espanso
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
}
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)