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"