如何删除Toolbar Android中的SearchView小部件中的白色下划线

我在我的项目中使用工具栏search小部件。 一切工作正常,但期望的东西,我完全坚持删除下面的search字段在我的工具栏中的下划线。 我已经尝试了很多解决scheme,没有任何工作。 下面是我尝试的一些解决scheme。

要求是删除图像中的白色下划线

在这里输入图像说明

Ist解决scheme:

//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解决scheme:

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

上面的代码工作来改变EditText的背景,但仍然强调显示在SearchBar中的closures图标下方。

我用于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> 

可能的重复

在此先感谢,任何forms的解决scheme和build议对我来说都是非常有用的。

Solutions Collecting From Web of "如何删除Toolbar Android中的SearchView小部件中的白色下划线"

一旦尝试如下

 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是查询背景的属性。 如果您支持语音search,则可能需要在该麦克风button下方移除该行。 那是什么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"