110 votes

Comment ouvrir SearchView par programme?

Il y a ce widget pour l'ActionBar qui appelle "SearchView'. Quand il n'est pas en cours d'utilisation, il ressemble à ceci:

enter image description here

Et quand il est en cours d'utilisation, il ressemble à ceci:

enter image description here

Je veux (par programme de cours) pour ouvrir la searchview (il est "en cours d'utilisation").

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 aucun de ceux qui ont travaillé...

Le SearchView dans le fichier XML:

<item android:id="@+id/menu_search"
      android:title="Search"
      android:icon="@drawable/ic_action_search"
      android:showAsAction="ifRoom|collapseActionView"
      android:actionViewClass="android.widget.SearchView" />

Merci d'avance.

271voto

Matthias Robbers Points 7755

Développer le SearchView avec

 searchView.setIconified(false);
 

et l'effondrer avec

 searchView.setIconified(true);
 

Vous devez modifier la valeur de android:showAsAction de ifRoom|collapseActionView en always . Le SearchView attribut de android:iconifiedByDefault devrait être true , ce qui est la valeur par défaut, sinon l'utilisateur ne peut pas réduire le SearchView après a été étendu par programme.

76voto

qbait Points 342

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

Ça marche pour moi.

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

6voto

James Campbell Points 889

Je sais qu'il est tard mais

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

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