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.