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);
Réponses:
Après m'être demandé et essayé, j'ai découvert qu'il existe une méthode dans l'API nommée setQuery () dans laquelle vous définissez le texte searchView et que vous pouvez choisir de soumettre la recherche ou de ne pas utiliser le paramètre booléen.
searchView.setQuery(searchToken, false);
true
pour que la requête soit également exécutée, mais notez que bien que la requête soit bien exécutée, la zone de texte reste vide, jusqu'à ce que le focus soit manuellement. Comment puis-je m'assurer que la valeur définie automatiquement s'affiche également automatiquement?
Vous pouvez utiliser setQuery()
pour modifier le texte dans la zone de texte.
Cependant, la setQuery()
méthode déclenche l'état de mise au point d'une vue de recherche, de sorte qu'un clavier s'affiche à l'écran une fois que cette méthode a été appelée.
Pour résoudre ce problème, appelez simplement la méthode searchView.clearFocus()
après setQuery()
pour la déconcentrer et le clavier ne s'affichera pas à l'écran.
Exemple:
String suggestWord = intent.getDataString();
searchView.setQuery(suggestWord, false);
searchView.clearFocus();
Si vous voulez pré-enregistrer votre SearchView
avec du texte, searchView.setQuery(text, false)
cela ne fonctionnera pas immédiatement. la raison est quand SearchView
se développe
searchView.onActionViewExpanded()
obtenir 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é-fichier une fois que le SearchView
fichier est développé
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
}
C'est ce qui a fonctionné pour moi
MenuItem sItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) sItem.getActionView();
sItem.expandActionView();
searchView.setQuery("your text", false);
Si vous voulez que le searchView se développe et qu'il puisse être réduit à une icône après que l'utilisateur ait tapé x (fermer), la manière est:
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.
REMARQUE: si vous le développez en utilisant:
searchView.onActionViewExpanded()
searchView ne rétrécira pas après que l'utilisateur ait appuyé sur x (fermer)