android android-actionbar actionbarsherlock searchview

Android-Actionbar Sherlock-Filtro de búsqueda



actionbarsherlock searchview (1)

primero hacer 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 el menú xml, agregue android:actionLayout y android:showAsAction="always|collapseActionView" para la opción Buscar. Para otra opción, haga 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 sobreescritura de fragmentos enCreateOptionsMenu 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 agregar 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 } };

Estoy intentando implementar Action Bar 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 Buscar, debería aparecer el campo de entrada Buscar que ya he implementado. Pero quiero que tome todo el ancho de la barra de acción. Alguna idea de cómo puedo lograr lo mismo.