Establecer el color del botón Clear de SearchView

Estoy creando un searchview en la barra de herramientas usando onCreateOptionsMenu , pero no puedo obtener el botón claro de X para inicialmente ser blanco. Se vuelve blanco al empezar a escribir letras. También permanece blanco después del despeje.

Ejemplo de botón claro que tiene el color de gris en lugar de blanco

 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.responsible_menu, menu); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); //TODO: May not be needed? searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mAdapter.updateUIWithFilter(query); return false; } @Override public boolean onQueryTextChange(String newText) { mAdapter.updateUIWithFilter(newText); return false; } }); // Does not work! Still not white. ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); searchClose.setColorFilter(Color.argb(255, 255, 255, 255)); searchClose.setAlpha(255); return true; } 

Responsable_menu.xml:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:appcompat="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/tools"> <item android:id="@+id/menu_search" android:title="@string/search" appcompat:actionViewClass="android.support.v7.widget.SearchView" appcompat:showAsAction="always"/> </menu> 

Encontré una solución. Sin embargo, interesado en mejores.

Descargó la imagen "botón claro" de https://www.google.com/design/icons/#ic_clear en blanco 24pt y agregó este código al final de onCreateOptionsMenu

  // Does help! ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); searchClose.setImageResource(R.drawable.ic_clear_white_24dp); 

Puede usar su propio icono personalizado en lugar del icono de cancelación predeterminado de searchview.

He utilizado por debajo del código que funciona bien, Espero que funcione para usted.

 private void setCloseSearchIcon(SearchView searchView) { try { Field searchField = SearchView.class.getDeclaredField("mCloseButton"); searchField.setAccessible(true); ImageView closeBtn = (ImageView) searchField.get(searchView); closeBtn.setImageResource(R.drawable.ic_close); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } 

Esto funcionará por encima de api nivel 14.

También puede configurarlo desde XML. Estoy utilizando la biblioteca de soporte 24.2.1 y una actividad con un tema cuyo padre es "Theme.AppCompat.Light" y un android.support.v7.widget.SearchView en el ActionBar.

Puede establecer un actionBarWidgetTheme en su tema de actividad de la siguiente manera:

 <style name="ActivityTheme" parent="Theme.AppCompat.Light"> <item name="actionBarWidgetTheme">@style/MyActionBarWidgetTheme</item> </style> 

Y luego definir MyActionBarWidgetTheme y establecer los colores que desea allí:

 <style name="MyActionBarWidgetTheme"> <item name="android:textColorSecondary">@android:color/white</item> </style> 
  • Android: textColorSecondary se aplica al icono de cierre

  • Android: textColorPrimary se aplica al texto que ingresa

  • ColorControlActivated se aplica al cursor

  • Android: textColorHint se aplica al texto de la pista

  • Diálogo de búsqueda en Mono Android
  • Cambiar la barra de acción
  • Agregue un filtro de búsqueda en RecyclerView con tarjetas?
  • Lista de búsqueda de Android al escribir
  • Android SearchView no funciona
  • Cambiar progreso / La escala de búsqueda no es lineal (por ejemplo, logarítmica)
  • ¿Cómo implementar la funcionalidad de búsqueda para Google Map Api V2 Android?
  • Cómo llamar a onSearchRequested al presionar lupa
  • ¿Cómo quitar el texto emergente de la búsqueda del android de búsqueda mientras que busca?
  • SearchView quita la línea de enfoque azul y muestra el cursor en determinada posición
  • Cómo obtener enfoque para EditText y navegar usando D-pad en Android TV
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.