Как удалить белое подчеркивание в виджете 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);
}
IInd Решение:
EditText searchEdit = ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text));
searchEdit.setBackgroundColor(Color.TRANSPARENT);
приведенный выше код работает для изменения фона EditText, но по-прежнему подчеркивание отображается ниже значка закрытия в строке поиска.
полный код, который я использую для виджета 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>
возможный дубликат этой
заранее спасибо, любые решения и предложения были бы очень полезны для мне.
7 ответов
один раз попробуйте следующим образом
View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
v.setBackgroundColor(Color.parseColor("here give actionbar color code"));
надеюсь, это поможет вам.
Если вы используете SearchView, используйте для API ниже 21
android:queryBackground="@android:color/transparent"
вы можете использовать ниже код, если вы используете API 21 или более
app:queryBackground="@android:color/transparent"
или вы можете сделать это через стили:
<style name="SearchViewMy" parent="Widget.AppCompat.Light.SearchView">
<item name="submitBackground">@color/primaryColor</item>
<item name="queryBackground">@color/primaryColor</item>
</style>
queryBackground атрибут для фона запроса. Если вы поддерживаете голосовой поиск, вы можете удалить строку также Под этой кнопкой микрофона. Вот что!--5-->submitBackground атрибут для.
тогда, конечно, применить стиль к вашей теме.
<style name="Theme.App" parent="Theme.AppCompat.Light.NoActionBar.FullScreen">
<item name="searchViewStyle">@style/SearchViewMy</item>
</style>
вы можете попробовать использовать код ниже, работает как шарм для меня.
View v = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
v.setBackgroundColor(ContextCompat.getColor(context,android.R.color.transparent));
просто добавьте эту строку, если вы используете виджет В7
app:queryBackground= "@android: цвет / прозрачный"
код для изменения цвета фона текста редактирования 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 исчезнет.