101 votes

comment modifier le texte de l'écran de recherche Android

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

183voto

khaled annajar Points 945

Après avoir cherché et essayé, j'ai découvert qu'il existe une méthode dans l'API appelée setQuery() qui permet de définir le texte de la searchView et de choisir de soumettre ou non la recherche à l'aide du paramètre booléen.

searchView.setQuery(searchToken, false);

39voto

kunemata Points 706

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

15voto

Wowo Ot Points 839

Voici ce qui fonctionne pour moi

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

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

10voto

Max Points 6217

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
}

-1voto

Putra Hardjono Points 71

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.com

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.

Powered by:

X