tutorial studio example ejemplo bar app android searchview android-toolbar android-search

studio - Cómo eliminar el subrayado blanco en un widget SearchView en la barra de herramientas de Android



searchview android ejemplo (7)

El código para cambiar el color de fondo del texto de edición de SearchView está debajo

public static void setSearchViewEditTextBackgroundColor(Context context, SearchView searchView, int backgroundColor){ int searchPlateId = context.getResources().getIdentifier("android:id/search_plate", null, null); ViewGroup viewGroup = (ViewGroup) searchView.findViewById(searchPlateId); viewGroup.setBackgroundColor(ComponentUtils.getColor(context, backgroundColor)); }

Si el color de fondo de su barra de acciones es blanco, llame al método anterior de la siguiente manera.

setSearchViewEditTextBackgroundColor(this, searchView, R.color.white);

Ahora el subrayado del texto de edición de SearchView desaparecerá.

Estoy utilizando el widget de búsqueda de la barra Google en mi proyecto. Todo funciona bien, pero espera lo que estoy completamente atrapado eliminando el subrayado debajo del campo de búsqueda en mi barra de herramientas. He intentado muchas soluciones y nada funciona. A continuación se encuentran algunas de las soluciones que probé.

El requisito es eliminar el subrayado blanco en la imagen

Primera solución:

//Removing underline int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null); View searchPlate = searchView.findViewById(searchPlateId); if (searchPlate!=null) { searchPlate.setBackgroundColor (Color.TRANSPARENT); int searchTextId = searchPlate.getContext ().getResources ().getIdentifier ("android:id/search_src_text", null, null); }

IInd Solución:

EditText searchEdit = ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)); searchEdit.setBackgroundColor(Color.TRANSPARENT);

El código anterior funciona para cambiar el fondo de EditText, pero el subrayado se muestra debajo del ícono de cerrar en SearchBar.

Complete el código que estoy usando para el widget SearchBar de la siguiente manera:

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater infl) { super.onCreateOptionsMenu(menu, infl); MenuInflater inflater = getActivity().getMenuInflater(); inflater.inflate(R.menu.action_search, menu); final SearchView searchView = (SearchView) MenuItemCompat .getActionView(menu.findItem(R.id.search)); SearchManager searchManager = (SearchManager) getActivity ().getSystemService (getActivity ().SEARCH_SERVICE); searchView.setSearchableInfo (searchManager.getSearchableInfo (getActivity ().getComponentName ())); //changing edittext color EditText searchEdit = ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)); searchEdit.setTextColor(Color.WHITE); }

action_search.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:compat="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/search" android:title="Search" android:icon="@drawable/abc_ic_search_api_mtrl_alpha" compat:showAsAction="ifRoom|collapseActionView" compat:actionViewClass="android.support.v7.widget.SearchView" /> </menu>

posible duplicado de this

Gracias de antemano, cualquier tipo de soluciones y sugerencias serían muy útiles para mí.


Lo siguiente resolvió el problema perfectamente para mí:

android:background="@android:color/transparent"


O puede hacerlo a través de estilos:

<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView"> <item name="submitBackground">@color/primaryColor</item> <item name="queryBackground">@color/primaryColor</item> </style>

queryBackground es un atributo para el fondo de la consulta. Si admite la búsqueda por voz, es posible que desee eliminar la línea también debajo de ese botón de micrófono. Eso es lo que es el atributo submitBackground .

Luego, por supuesto, aplica el estilo a tu tema.

<style name="Theme.App" parent="Theme.AppCompat.Light.NoActionBar.FullScreen"> <item name="searchViewStyle">@style/SearchViewMy</item> </style>


Puedes intentar usar el siguiente código, funciona como un encanto para mí.

View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate); v.setBackgroundColor(ContextCompat.getColor(context,android.R.color.transparent));


Si está utilizando SearchView, utilice para API debajo de 21

android:queryBackground="@android:color/transparent"

puedes usar el código a continuación si estás usando API 21 o más

app:queryBackground="@android:color/transparent"


Una vez que intente lo siguiente

View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate); v.setBackgroundColor(Color.parseColor("here give actionbar color code"));

Espero que esto te ayude.


Simplemente agregue esta línea si está usando un widget v7

aplicación: queryBackground = "@ android: color / transparent"