studio getsupportactionbar example custom bar java android android-actionbar

java - getsupportactionbar - ¿Cómo abro el SearchView programáticamente?



show action bar android (4)

Existe este widget para ActionBar que llamó ''SearchView''. Cuando no está en uso, se ve así:

Y cuando está en uso, se ve así:

Quiero (programáticamente por supuesto) abrir la vista de búsqueda (hacerla "en uso").

Intenté varias funciones como:

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

Pero ninguno de esos funcionó ...

The SearchView en el 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" />


Expande SearchView con

searchView.setIconified(false);

y colapsarlo con

searchView.setIconified(true);

Necesita cambiar el valor de android:showAsAction from ifRoom|collapseActionView to always . El atributo android:iconifiedByDefault debe ser true , que es el valor predeterminado, de lo contrario el usuario no puede colapsar el SearchView después de que se haya expandido mediante programación.


Intente llamar a expandActionView() en MenuItem, no en ActionViewExpanded () en ActionView.

Esto funciona para mi.

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


Sé que esto es tarde, pero

Intenta llamar a expandActionView () para abrirlo y collapseActionView () para cerrarlo. Puede llamar a requestFocus () en la vista de acción real a través de getActionView () para darle al foco de la vista de búsqueda :)


Si desea usar la biblioteca de soporte solo cuando sea necesario, haga esto

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

de lo contrario, simplemente haz esto

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