Il y a ce widget pour le ActionBar qui s'appelle 'SearchView'. Quand il n'est pas utilisé, cela ressemble à ceci:
Et quand il est utilisé, cela ressemble à ceci:
Je veux (par programme bien sûr) ouvrir le searchview (le rendre "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 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" />
Développez le SearchView
avec
searchView.setIconified(false);
et l'effondrer avec
searchView.setIconified(true);
Vous devez changer la valeur de Android:showAsAction
de ifRoom|collapseActionView
à always
. L'attribut SearchView
Android:iconifiedByDefault
devrait être true
, qui est la valeur par défaut, sinon l'utilisateur ne peut pas réduire le SearchView
après l'avoir développé par programme.
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();
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 faites-le simplement
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
MenuItemCompat.expandActionView(searchMenuItem);
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 :)