Comment ouvrir le SearchView par programmation?

Il y a ce widget pour ActionBar qui s’appelle “SearchView”. Quand il n’est pas utilisé, il ressemble à ceci:

entrer la description de l'image ici

Et quand il est utilisé, il ressemble à ceci:

entrer la description de l'image ici

Je veux (par programme bien sûr) ouvrir la vue de recherche (la rendre «utilisée»).

J’ai essayé plusieurs fonctions telles que:

SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setOnQueryTextListener(this); searchView.performClick(); searchView.requestFocus(); 

Mais rien de tout cela n’a fonctionné …

La SearchView dans le XML:

  

Développez la SearchView avec

 searchView.setIconified(false); 

et le réduire avec

 searchView.setIconified(true); 

Vous devez changer la valeur de android:showAsAction de ifRoom|collapseActionView à always . L’atsortingbut android:iconifiedByDefault SearchView android:iconifiedByDefault doit être true , ce qui est la valeur par défaut, sinon l’utilisateur ne peut pas SearchView la SearchView après son développement par programme.

Essayez d’appeler expandActionView() sur MenuItem, pas sur onActionViewExpanded () sur ActionView.

Ça marche pour moi.

 MenuItem searchMenuItem = menu.findItem(R.id.menu_search); searchView = (SearchView) searchMenuItem.getActionView(); searchMenuItem.expandActionView(); 

Si vous souhaitez utiliser la bibliothèque de support uniquement lorsque cela est nécessaire, procédez comme suit:

  MenuItem searchMenuItem = menu.findItem(R.id.action_search); if (Utils.hasIceCreamSandwich()) searchMenuItem.expandActionView(); else MenuItemCompat.expandActionView(searchMenuItem); 

sinon simplement faire cela

  MenuItem searchMenuItem = menu.findItem(R.id.action_search); MenuItemCompat.expandActionView(searchMenuItem); 

Je sais que c’est en retard mais

Essayez d’appeler expandActionView () pour l’ouvrir et collapseActionView () pour le fermer. Vous pouvez appeler requestFocus () sur la vue d’action réelle via getActionView () pour donner le focus à la vue de recherche 🙂