Как удалить белое подчеркивание в виджет SearchView на панели инструментов Android

Я использую виджет поиска панели инструментов в своем проекте. Все работает нормально, но ожидайте, что я полностью застрял с удалением подчеркивания под полем поиска на моей панели инструментов. Я пробовал много решений, и ничего не получается. Ниже приведены некоторые из решений, которые я пробовал.

Требование заключается в удалении белого подчеркивания на изображении

Введите описание изображения здесь

Ist Решение:

//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); } 

II-е решение:

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

Вышеупомянутый код работает, чтобы изменить фон EditText, но все же подчеркивание отображается ниже значком закрытия в SearchBar.

Полный код, который я использую для виджета SearchBar, выглядит следующим образом:

  @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> 

Возможный дубликат этого

Спасибо заранее, любые решения и предложения были бы очень полезны для меня.

Solutions Collecting From Web of "Как удалить белое подчеркивание в виджет SearchView на панели инструментов Android"

Попробуйте сделать следующее.

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

Надеюсь, это поможет вам.

Или вы можете сделать это через стили:

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

QueryBackground – это атрибут для фона запроса. Если вы поддерживаете голосовой поиск, вы можете удалить линию также под этой кнопкой микрофона. То, что для атрибута submitBackground .

Тогда, конечно, примените стиль к своей теме.

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

Если вы используете SearchView, используйте для API ниже 21

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

Вы можете использовать код ниже, если используете API 21 или более

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

Вы можете попробовать использовать приведенный ниже код, для меня это как шарм.

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

Код для изменения цвета фона текста редактирования SearchView приведен ниже.

 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)); } 

Если цвет фона панели действий белый, то вызовите описанный выше метод следующим образом.

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

Теперь подчеркивание текста редактирования SearchView исчезнет.

Следующее решение проблемы идеально для меня:

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