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