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?
- Cómo colapsar completamente un SearchView después de un elemento seleccionado?
- Cómo utilizar SearchView en la barra de herramientas de Android
- Biblioteca de soporte de Android 24.0.0 no muestra texto en SearchView
- Espacio izquierdo en la barra de herramientas con SearchView android studio
- ¿Cómo manejar el evento de clic de sugerencia con SearchView en ActionBar, ContentProvider llamando a webService, devolviendo el cursor?
- Cómo descartar el teclado en Android SearchView?
- Detección de un clic en el botón de la barra de acción de nuevo - (OnOptionsItemSelected no llamar cuando haga clic en el botón de la barra de acción de vuelta)
- Obtención de excepción de conversión de clase durante el uso de android.support.v7.widget.SearchView
- Estilizar la vista de búsqueda de android y la lista desplegable en la barra de acciones
- Barra de Acción Android SearchView as Autocomplete?
- No se puede ocultar el teclado virtual de SearchView iconfiedbydefault (false)
- Android SearchView Ocultar el teclado al iniciar
- Quitar icono de la vista de búsqueda del texto de la pista
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.
- ¿Cómo puedo cerrar un alerta de Android?
- Averigüe si el dispositivo Android es retrato o paisaje para su uso normal.