Icono de Android SearchView

Quiero desactivar el icono de Mag que se muestra dentro del componente de la vista de búsqueda. ¿Alguna idea de cómo referenciarlo y eliminarlo o reemplazarlo por otro dibujable?

Introduzca aquí la descripción de la imagen

En su tema:

<style name="Theme" parent="Your parent theme"> <item name="android:searchViewSearchIcon">@android:drawable/ic_search</item> </style> 

Editar:
searchViewSearchIcon es un atributo privado. Por lo tanto, esta respuesta no funciona (en la ActionBar nativa).

Dado que la formulación de la pregunta no contiene ninguna mención de ActionBarSherlock (excepto la etiqueta) y se han agregado comentarios que la respuesta aceptada no funciona para la barra de acción de biblioteca estándar y / o de soporte, estoy publicando otra respuesta. Aquí está el código Java para onCreate :

 // obtain action bar ActionBar actionBar = getSupportActionBar(); // find SearchView (im my case it's in a custom layout because of left alignment) View v = actionBar.getCustomView(); SearchView searchView = (SearchView)v.findViewById(R.id.search_view); ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); // method 1: does not work persistently, because the next line // should be probably called after every manipulation with SearchView // icon.setVisibility(View.GONE); // method 2: working code icon.setAdjustViewBounds(true); icon.setMaxWidth(0); icon.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); icon.setImageDrawable(null); 

Según este post , mientras se utiliza un SearchView de la biblioteca de soporte ( android-support-v7-appcompat en mi caso) con setIconifiedByDefault(false) el icono se muestra fuera de editar SearchAutoComplete ( SearchAutoComplete ). De lo contrario ( setIconifiedByDefault(true) ) se muestra dentro del cuadro. El código presentado se utiliza para desactivar "iconificación" por defecto, y puede requerir algunos cambios para trabajar con la vista de búsqueda "iconificada". No sé si lo mismo se aplica a ActionBarSherlock .

Espero que esto ayude.

Este icono es una pista. Así que simplemente puede establecer un nuevo texto de sugerencia.

 int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText) searchView.findViewById(searchPlateId); searchPlate.setHint("Search"); 

Si desea que el icono como texto de sugerencia utilice una cadena extensible con ImageSpan

 int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText) searchView.findViewById(searchPlateId); searchPlate.setTextColor(getResources().getColor(R.color.search_text_color)); SpannableString string = new SpannableString(" "); Drawable d = getResources().getDrawable(R.drawable.ic_search); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BOTTOM); string.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); searchPlate.setHint(string); 

Tienes que personalizar el estilo de SearchView como este:

 <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"> <!-- Search button icon --> <item name="searchIcon">@drawable/ic_arrow_back</item> </style> 

Y luego AppTheme en tu AppTheme .

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- your other colors and styles --> <item name="searchViewStyle">@style/MySearchViewStyle</item> </style> 

Y aplicarlo a la vista de búsqueda con el style la etiqueta:

 <android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/searchView" android:layout_height="wrap_content" android:layout_width="match_parent" app:queryHint="@string/search_hint" android:focusable="true" android:focusableInTouchMode="true" style="@style/MySearchViewStyle" app:iconifiedByDefault="false" /> 

¡Espero eso ayude!

Si está utilizando la biblioteca de compatibilidad de aplicaciones v7, puede cambiar fácilmente esto en el tema. En su tema que se extiende desde un tema de AppCompat simplemente añada una línea como:

 <item name="searchViewSearchIcon">@drawable/ic_search</item> 

Para eliminar el botón de búsqueda de sugerencias:

 mNearMeSearchBar = (SearchView) mView.findViewById(R.id.nearme_search_component_nearme_edittext); mNearMeSearchBar.setIconifiedByDefault(false); //Removes Search Hint Icon 

Para cambiar el botón de búsqueda:

 int searchImgId = getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView v = (ImageView) mNearMeSearchBar.findViewById(searchImgId); v.setImageResource(R.drawable.ic_compass); 

Estas líneas eliminaron la lupa:

  //remove search icon mSearchView.setIconifiedByDefault(false); ImageView icon = (ImageView) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon); icon.setVisibility(View.GONE); 

Tienes que añadir esta línea en tu MenuItem android:iconifiedByDefault="@android:color/transparent"

 <item android:id="@+id/activity_home_action_search" android:icon="@drawable/ic_action_search" android:title="@string/activity_home_search_title" android:iconifiedByDefault="@android:color/transparent" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always|collapseActionView" /> 

O puede hacer programaticamente searchView.setIconifiedByDefault(true);

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); getMenuInflater().inflate(R.menu.home, menu); MenuItem searchMenuItem = menu.findItem(R.id.activity_home_action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); searchView.setIconifiedByDefault(true); } 

En su estilo de tema incluyen lo siguiente:

 <style name="YourTheme.Toolbar"> <item name="searchViewStyle">@style/YourActionBarSearch</item> <item name="editTextColor">@color/your_ab_text_color</item> <item name="android:textColorHint">@color/your_ab_hint_color</item> </style> 

Ahora puede definir el estilo del searchViewStyle con searchViewStyle y editTextColor establecerá el color del texto en el cuadro de búsqueda. Al establecer android:textColorHint también establecerá el color de la pista, por ejemplo, "Buscar …".

 <style name="YourActionBarSearch" parent="@style/Widget.Holo.SearchView"> <item name="searchIcon">@drawable/ic_ab_search</item> <item name="queryBackground">@null</item> <item name="submitBackground">@null</item> <item name="searchHintIcon">@null</item> <item name="defaultQueryHint">@null</item> <item name="closeIcon">@drawable/ic_ab_small_search_close</item> </style> 

Esto modificará la vista de búsqueda como más te guste, más o menos. El campo searchIcon es el icono de la barra de acción. El campo searchHintIcon es el pequeño icono a la izquierda de la pista en el campo de búsqueda , que usted está pidiendo en su pregunta; @null en @null para quitar el icono. El campo closeIcon es el icono de cierre en el lado derecho del campo de búsqueda.

  • El uso de SearchView con AppCompatActivity genera fallas en la interfaz de usuario
  • Android - Actionbar Sherlock - Filtro de búsqueda
  • Eliminar el relleno de Android SearchView cuando se amplía
  • Enviar una consulta cuando haga clic en el botón de búsqueda en el teclado
  • Cambio del fondo dibujable del widget de búsqueda
  • Ejemplo de android.support.v4.widget.SearchViewCompat?
  • Botón del micrófono ActionBar (búsqueda por voz) en SearchView
  • onQueryTextChange activado después del restablecimiento de la aplicación
  • SearchView es invisible con el parámetro collapseActionView desde la biblioteca de diseño 24.1
  • No se puede mostrar el teclado automáticamente en el SearchView
  • vista de búsqueda no expandir todo el ancho
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.