Изменение цвета фона в раскрывающемся списке автозаполнения searchview

У меня есть поиск с поставщиком контента для пользовательских предложений, которые отображаются в раскрывающемся списке. Однако выпадающий фон темный, а текст черный, поэтому он не очень заметен. Моя тема приложения наследуется от Theme.AppCompat.Light, так что все остальное в моем приложении – черный текст на светлом фоне.

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

Я хочу изменить фон раскрывающегося списка, чтобы текст был читаемым, но я не нашел способа сделать это. Самое близкое, что я получил, было следующим решением: Стиль Android SearchView Drop down popup. Но когда выпадающее меню появляется, вещи выглядят испорченными.

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

Есть ли какое-нибудь рабочее решение для этого?

Solutions Collecting From Web of "Изменение цвета фона в раскрывающемся списке автозаполнения searchview"

Применяя стили, вы можете изменить цвет фона выпадающего меню и цвет и размер текста элементов

<!-- ToolBar --> <style name="ToolBarStyle" parent="Theme.AppCompat"> <item name="android:textColorPrimary">@android:color/white</item> <item name="android:textColorSecondary">@android:color/white</item> <item name="actionMenuTextColor">@android:color/white</item> <item name="android:dropDownItemStyle">@style/myDropDownItemStyle</item> <item name="android:dropDownListViewStyle">@style/myDropDownListViewStyle</item> </style> <style name="myDropDownItemStyle" parent="Widget.AppCompat.DropDownItem.Spinner"> <item name="android:textColor">@color/secondary_text_default_material_light</item> <item name="android:textSize">14dp</item> </style> <style name="myDropDownListViewStyle" parent="Widget.AppCompat.ListView.DropDown"> <item name="android:background">#FFF</item> </style> 

Вот одна возможность.

Определите макет строки предложения запроса, например R.layout.li_query_suggestion, который выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <TextView android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/white" android:gravity="center_vertical" android:minHeight="56dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:textAppearance="?android:attr/textAppearanceListItemSmall" android:textColor="@android:color/black" tools:text="Blah blah blah"/> 

Обратите внимание, что цвет фона белый, а цвет текста черный. Вы можете, конечно, изменить эти значения.

Затем в адаптере курсора укажите макет, который вы создали как макет строки. Например:

 CursorAdapter suggestionAdapter = new SimpleCursorAdapter( getActivity(), R.layout.li_query_suggestion, null, new String[]{"name"}, new int[]{android.R.id.text1}, 0); 

Это даст вам нечто похожее на следующее: Введите описание изображения здесь

Просто fyi, моя текущая тема выглядит так:

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/light_blue_500</item> <item name="colorPrimaryDark">@color/light_blue_700</item> <item name="colorAccent">@color/pink_a200</item> <item name="android:windowActionBarOverlay">true</item> <item name="searchViewStyle">@style/CustomSearchView</item> </style> 

Я думаю, вы должны использовать

 SearchView.SearchAutoComplete autoCompleteTextView = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text); if (autoCompleteTextView != null) { autoCompleteTextView.setDropDownBackgroundDrawable(getResources().getDrawable(R.drawable.abc_popup_background_mtrl_mult)); } 

Это может установить выпадающий фон SearchAutoComplete для Light