Android – Actionbar Sherlock – Filtro de búsqueda
Estoy intentando implementar la Barra de Acción usando ActionBar Sherlock. Tengo tres botones de acción uno de los cuales es un botón de búsqueda. Al hacer clic en el botón de búsqueda, se mostrará el campo de entrada de búsqueda que ya he implementado. Pero quiero que tome todo el ancho de la barra de acción. Cualquier idea de cómo puedo lograr lo mismo.
- ¿Cómo mantener expandido SearchView en el lado derecho de ActionBar (mientras se utiliza el icono personalizado)?
- Cambio del fondo dibujable del widget de búsqueda
- La barra de herramientas de Android appcompat se estira cuando se obtiene el enfoque de búsqueda
- No se puede obtener android.support.v7.widget.SearchView para aceptar el texto
- Crear ContentProvider asincrónico para Actionbar SearchView
- Android SearchView onclick
- No se puede mostrar el teclado automáticamente en el SearchView
- Cómo utilizar SearchView en la barra de herramientas de Android
- Ejemplo de android.support.v4.widget.SearchViewCompat?
- ¿Cómo detectar si SearchView se expande?
- Cómo restablecer listview después de searchview se cierra en android?
- La vista de búsqueda no responde cuando se hace clic en la barra de herramientas de AppCompat
- Android: Añadir un botón personalizado a SearchView Widget en Actionbar
Primero haga un editTextLayout
Layout_search.xml
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/search_edit_text" android:cursorVisible="true" android:hint="@string/search_friend_hint" android:imeOptions="actionDone" android:inputType="text" android:textColor="@android:color/black" android:textCursorDrawable="@android:color/black" />
En su menú xml add android:actionLayout
y android:showAsAction="always|collapseActionView"
para la opción de búsqueda. Para otra opción make android:showAsAction="ifRoom"
Menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:icon="@drawable/ic_action_sort" android:orderInCategory="1" android:showAsAction="ifRoom" android:title="@string/menu_sort"/> <item android:id="@+id/menu_search" android:actionLayout="@layout/layout_search" android:icon="@drawable/search" android:orderInCategory="0" android:showAsAction="always|collapseActionView" android:title="@string/search"/> </menu>
En su actividad o fragmento sobreescribir onCreateOptionsMenu como este fragmento.java
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu, menu); final EditText editText = (EditText) menu.findItem( R.id.menu_search).getActionView(); editText.addTextChangedListener(textWatcher); MenuItem menuItem = menu.findItem(R.id.menu_search); menuItem.setOnActionExpandListener(new OnActionExpandListener() { @Override public boolean onMenuItemActionCollapse(MenuItem item) { // Do something when collapsed return true; // Return true to collapse action view } @Override public boolean onMenuItemActionExpand(MenuItem item) { editText.clearFocus(); return true; // Return true to expand action view } }); }
Y agregue textWatcherListener
private TextWatcher textWatcher = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (null != mAdapter) { mAdapter.getFilter().filter(s); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } };