Ejemplo de android.support.v4.widget.SearchViewCompat?

Estoy intentando utilizar ActionBarSherlock con ActionBarSherlock en una aplicación de la API 8.

 public boolean onCreateOptionsMenu(Menu menu) { MenuItem item = menu.add("Search") .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search) .setActionView(R.layout.collapsible_edittext); item.setShowAsAction( MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); // To use SearchViewCompat, I need to add it to the Menu item as well: View searchView = SearchViewCompat.newSearchView(this); // ... SearchViewCompat.setOnQueryTextListener(...); // ... item.setActionView(searchView); 

Tenga en cuenta que tanto el código superior como el inferior deben llamar a setActionView() . ¿Significa eso que no es posible hacer la búsqueda?

Si está utilizando la versión 4.2 de ActionBarSherlock Library, puede reemplazar el Widget SearchView API 11 con un widget ActionView SearchView para que sea compatible con versiones anteriores:

Search.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_search" android:icon="@drawable/ic_action_search" android:title="@string/description_search" android:orderInCategory="0" android:actionViewClass="com.actionbarsherlock.widget.SearchView" android:showAsAction="ifRoom|collapseActionView" /> </menu> 

Clase de actividad

 //IMPORTANT!!! import com.actionbarsherlock.widget.SearchView; 

 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getSupportMenuInflater().inflate(R.menu.search, menu); setupSearchMenuItem(menu); return true; } private void setupSearchMenuItem(Menu menu) { MenuItem searchItem = menu.findItem(R.id.menu_search); if (searchItem != null) { SearchView searchView = (SearchView) searchItem.getActionView(); if (searchView != null) { SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE); searchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName())); } } } } 

¿Cuál es el problema real? SearchViewCompat devolverá null para dispositivos pre-HC ya que el widget SearchView no existe. Esto significa que tendrá que proporcionar su propia vista de acción personalizada que imita el HC SearchView.

También puede backport el componente SearchView de las fuentes de Android y utilizarlo.

De lo contrario, sólo puede utilizar las interfaces de búsqueda existentes Android tiene, en cuyo caso para los dispositivos HC + que utiliza la vista de acción para realizar una búsqueda, pero en dispositivos Froyo y Gingerbread el usuario hace clic en el icono de búsqueda y una barra de búsqueda anima desde la parte superior.

Espero que esto ayude.

En algún momento de su Actividad:

 public class HomeActivity extends SherlockFragmentActivity implements SearchView.OnQueryTextListener { // ... SearchView searchView = (com.actionbarsherlock.widget.SearchView) actionBarCustom.findViewById(R.id.search); SearchManager sm = (SearchManager)getSystemService(SEARCH_SERVICE); searchView.setSearchableInfo(sm.getSearchableInfo(getComponentName())); searchView.setSubmitButtonEnabled(true); searchView.setOnQueryTextListener(this); 

Y luego filtrar el adaptador de lista:

 @Override public boolean onQueryTextSubmit(String query) { return true; } @Override public boolean onQueryTextChange(String newText) { mAdapter.getFilter().filter(newText.trim()); return false; } 

De esta manera, su adaptador de lista debe implementar filtrable.

Mejor utilizar MenuItemCompat, creo que esto es útil para usted

  getMenuInflater().inflate(R.menu.main, menu); MenuItem searchItem = menu.findItem(R.id.search); SearchManager searchManager =(SearchManager)getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView)MenuItemCompat.getActionView(searchItem); SearchableInfo info = searchManager.getSearchableInfo(getComponentName()); searchView.setSearchableInfo(info); 
  • Estilizar la vista de búsqueda de android y la lista desplegable en la barra de acciones
  • Barra de Acción de Android SearchView Menu Icon Size
  • Barra de Acción Android SearchView as Autocomplete?
  • Android Searchview OnQueryTextListener con base de datos no funciona
  • Searchview que no cierra correctamente en la PRIMERA prensa trasera (es solamente perdida del foco)
  • No se puede obtener android.support.v7.widget.SearchView para aceptar el texto
  • Android searchview setOnActionExpandListener en Honeycomb 3.2
  • Android SearchView OnFocusChangeListener: onFocusChange no se llama en absoluto
  • Pasar la consulta de búsqueda ActionBar para fragmentar
  • No se puede mostrar el teclado automáticamente en el SearchView
  • SearchView es invisible con el parámetro collapseActionView desde la biblioteca de diseño 24.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.