android - para - ocultar aplicaciones apk
Expandir la vista de búsqueda para usar la barra de acción completa(ocultar otras cosas) (3)
Bueno, puedes imitarlo ocultando todos los demás elementos cuando se amplíe SearchView
:
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
final MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (android.widget.SearchView) searchItem.getActionView();
// Detect SearchView icon clicks
searchView.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setItemsVisibility(menu, searchItem, false);
}
});
// Detect SearchView close
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
setItemsVisibility(menu, searchItem, true);
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
private void setItemsVisibility(Menu menu, MenuItem exception, boolean visible) {
for (int i=0; i<menu.size(); ++i) {
MenuItem item = menu.getItem(i);
if (item != exception) item.setVisible(visible);
}
}
Tengo un SearchView
dentro de mi ActionBar
, y quiero usar toda la ActionBar
cuando se presiona el ícono de búsqueda, pero solo puedo usar el espacio libre de la ActionBar
ej .: http://imgur.com/wnjMfWO
mi código de menú:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="br.com.moderna.houaiss.activity.SearchActivity" >
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_search_white_48dp"
android:showAsAction="collapseActionView|always"
android:title="@string/search"/>
<item
android:id="@+id/backWardHistory"
android:icon="@drawable/ic_arrow_back_white_48dp"
android:showAsAction="always"
android:title="@string/back_history"/>
<item
android:id="@+id/forWardHistory"
android:icon="@drawable/ic_arrow_forward_white_48dp"
android:showAsAction="always"
android:title="@string/forward_history"/>
<item
android:id="@+id/action_home"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_home"/>
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_about"/>
<item
android:id="@+id/action_configuration"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_configuration"/>
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_logout"/>
Había probado android:showAsAction="ifRoom"
, pero necesito que estén siempre en mi ActionBar
, y no dentro de mi menú.
EDITAR ------
Gracias a @Simas,
Utilicé el método setOnActionExpandListener para lograr este efecto
final MenuItem searchItem = menu.findItem(R.id.search);
searchItem.setOnActionExpandListener(new OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(final MenuItem item) {
SearchActivity.this.setItemsVisibility(menu, searchItem, false);
return true;
}
@Override
public boolean onMenuItemActionCollapse(final MenuItem item) {
SearchActivity.this.setItemsVisibility(menu, searchItem, true);
return true;
}
});
private void setItemsVisibility(final Menu menu, final MenuItem exception,
final boolean visible) {
for (int i = 0; i < menu.size(); ++i) {
MenuItem item = menu.getItem(i);
if (item != exception)
item.setVisible(visible);
}
}
Esta sería una respuesta tardía, pero podría agregar este atributo a su elemento de menú y el trabajo se hará por usted.
app:showAsAction="collapseActionView|always"
Palabra clave aquí es el colapsoActionView.
Intenté esta línea de código para hacer que la vista de búsqueda expanda el ancho completo disponible. Esto funciona cuando hay otros elementos que se muestran en la barra de acción.
searchView.setMaxWidth(android.R.attr.width);