Стиль Android SearchView Drop down popup

Я хотел бы знать, как SearchView раскрывающееся всплывающее окно Android 4.0 SearchView ?

Я использую Theme.Sherlock.Light.DarkActionBar , но я не знаю, как Theme.Sherlock.Light.DarkActionBar выпадающий поиск на белом фоне и черный текст?

Solutions Collecting From Web of "Стиль Android SearchView Drop down popup"

По какой-то причине тематика с использованием «searchAutoCompleteTextView» тоже не работала для меня. Поэтому я решил это, используя следующий код при настройке моего SearchView:

Примечание. Все это делается с помощью библиотеки поддержки android v7 / AppCompat

 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_menu, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); // Theme the SearchView's AutoCompleteTextView drop down. For some reason this wasn't working in styles.xml SearchAutoComplete autoCompleteTextView = (SearchAutoComplete) searchView.findViewById(R.id.search_src_text); if (autoCompleteTextView != null) { autoCompleteTextView.setDropDownBackgroundResource(R.drawable.abc_search_dropdown_light); } } 

Существует два ресурса для поиска, предоставляемых библиотекой совместимости, они

  • R.drawable.abc_search_dropdown_light (светлый фон)
  • R.drawable.abc_search_dropdown_dark (Темный фон)

Это несколько шагов.

Во-первых, вам нужно создать пользовательский вариант с четырьмя состояниями, вы можете обратиться к {ABSLibrary} /res/drawable/abs__list_selector_holo_dark.xml. Это будет примерно так:

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@android:color/transparent" /> <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_disabled_holo_dark" /> <item android:state_focused="true" android:state_enabled="false" android:drawable="@drawable/abs__list_selector_disabled_holo_dark" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_dark" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/abs__list_selector_background_transition_holo_dark" /> <item android:state_focused="true" android:drawable="@drawable/abs__list_focused_holo" /> 

Сохраните настраиваемый вычерченный выше (формат .xml) в свой собственный проект res / drawable. Отредактируйте стили соответственно, перейдя по приведенному выше образцу. Обратите внимание, что стиль может быть глубоко вложенным, просто проявляйте терпение, глядя вниз по дереву.

Затем создайте (или добавьте в существующую пользовательскую тему) настраиваемую тему со следующим, ее следует сохранить как res / values ​​/ styles.xml:

 <style name="Theme.MyCustomTheme" parent="Theme.Sherlock.Light.DarkActionBar"> <item name="searchAutoCompleteTextView">@style/MySearchAutoCompleteTextView</item></style> <style name="MySearchAutoCompleteTextView" parent="Sherlock.__Widget.SearchAutoCompleteTextView"> <item name="android:dropDownSelector">@drawable/myCustomDrawable_DropDown</item> <item name="android:popupBackground">@drawable/myCustomDrawable_popupBackground</item></style> 

Обратите внимание, что «myCustomDrawable_DropDown» и «myCustomDrawable_popupBackground» должны быть именем пользовательского drawable, которое вы только что создали.

Вы просто должны знать, что «андроид: dropDownSelector» и / или «android: popupBackground» – это те, кто отвечает за тематику всплывающего окна автозаполнения.

Наконец , примените тему в своем манифесте!

 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.MyCustomTheme" > ...