Я хотел бы знать, как оформить раскрывающееся всплывающее окно Android 4.0 SearchView
?
Я использую Theme.Sherlock.Light.DarkActionBar
, но я не знаю, как стилизовать выпадающий поиск с белым фоном и черным текстом?
Я хотел бы знать, как оформить раскрывающееся всплывающее окно Android 4.0 SearchView
?
Я использую Theme.Sherlock.Light.DarkActionBar
, но я не знаю, как стилизовать выпадающий поиск с белым фоном и черным текстом?
По какой-то причине тема с использованием «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);
}
}
Библиотека совместимости предоставляет два раскрывающихся ресурса поиска.
Для этого нужно выполнить несколько шагов.
Во-первых, вам нужно создать собственный drawable с четырьмя состояниями, вы можете обратиться к {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" />
Save the custom drawable above (.xml format) into your own project res/drawable. Edit the styles accordingly by referring the sample above. Please note that the style might be deeply nested, just be patience looking down the tree.
Затем создайте (или поместите в существующую пользовательскую тему) пользовательскую тему со следующим, ее следует сохранить как 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» должны быть именем пользовательского рисунка, который вы только что создали.
Вам просто нужно знать, что «android: dropDownSelector» и/или «android: popupBackground» — это те, кто отвечает за тему всплывающего окна автозаполнения.
Наконец, примените тему в своем манифесте!
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.MyCustomTheme" > ...