Я хотел бы знать, как создать раскрывающееся всплывающее окно 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 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" />
Сохраните пользовательский вычерченный выше (формат .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" должны быть именем созданного пользовательского чертежа, который вы только что создали.
Вам просто нужно знать, что "android: dropDownSelector" и/или "android: popupBackground" - это те, кто отвечает за тематику всплывающего окна автозаполнения.
Наконец, примените тему в своем манифесте!
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.MyCustomTheme" > ...