Android 4.0のドロップダウンポップアップのスタイルを設定する方法を知りたいSearchView
ですか?
を使用してTheme.Sherlock.Light.DarkActionBar
いますが、ドロップダウン検索を白い背景と黒いテキストにスタイル設定する方法がわかりませんか?
Android 4.0のドロップダウンポップアップのスタイルを設定する方法を知りたいSearchView
ですか?
を使用してTheme.Sherlock.Light.DarkActionBar
いますが、ドロップダウン検索を白い背景と黒いテキストにスタイル設定する方法がわかりませんか?
何らかの理由で、「searchAutoCompleteTextView」を使用したテーマ設定も機能しませんでした。そこで、SearchViewを設定するときに、次のコードを使用して解決しました。
注:これはすべてandroidv7サポート/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);
}
}
互換性ライブラリによって提供される2つの検索ドロップダウンリソースがあります。
そうすることには複数のステップがあります
まず、4つの状態を持つカスタムドローアブルを作成する必要があります。{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" > ...