Existe-t-il une méthode setText() pour SearchView ou quelque chose comme ça ? J'essaie de définir le texte de recherche dans le searchView comme ceci mais il n'y a pas de méthode pour cela.
searchView.setText(searchToken);
Existe-t-il une méthode setText() pour SearchView ou quelque chose comme ça ? J'essaie de définir le texte de recherche dans le searchView comme ceci mais il n'y a pas de méthode pour cela.
searchView.setText(searchToken);
Vous pouvez utiliser setQuery()
pour modifier le texte de la zone de texte.
Cependant, setQuery()
déclenche l'état de focalisation d'une vue de recherche, de sorte qu'un clavier s'affiche à l'écran après l'invocation de cette méthode.
Pour résoudre ce problème, il suffit d'appeler searchView.clearFocus()
après setQuery()
pour le défocaliser et le clavier n'apparaîtra pas à l'écran.
Exemple :
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Si vous voulez pré-filtrer votre SearchView
avec du texte searchView.setQuery(text, false)
ne fonctionnerait pas en l'état. La raison en est que lorsque SearchView
s'élargit
searchView.onActionViewExpanded()
est appelé qui appelle searchView.setText("")
et efface tout texte que nous avons défini.
La solution consiste à définir un écouteur Expand et à définir le texte de préfiltrage une fois que l'écran d'accueil de l'utilisateur est ouvert. SearchView
est élargi
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
}
Si vous voulez que la fenêtre de recherche s'étende et qu'elle puisse être réduite à une icône après que l'utilisateur ait tapé x (fermer), la solution est la suivante :
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.
NOTE : Si vous le développez en utilisant :
searchView.onActionViewExpanded()
searchView ne rétrécit pas après que l'utilisateur ait tapé x (fermeture)
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.