オーバーフロー リスト アイテムの色を変更するには、アプリケーション テーマに 2 つのアイテムを追加します。このテーマは通常 で定義されres/values/styles.xml
ます。
<item name="android:dropDownListViewStyle">@style/DropDownListView</item>
<item name="dropDownListViewStyle">@style/DropDownListView</item>
その同じファイルに、割り当てたばかりのスタイルを追加します。
<style name="DropDownListView" parent="@style/Widget.Sherlock.ListView.DropDown">
<item name="android:listSelector">@drawable/selectable_background</item>
</style>
selectable_background.xml
最後に、以下を含む drawable フォルダーにセレクター drawable を作成します。
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:exitFadeDuration="@android:integer/config_mediumAnimTime" >
<item android:state_pressed="false" android:state_focused="true" android:drawable="@color/focussed_color" />
<item android:state_pressed="true" android:drawable="@color/pressed_color" />
<item android:drawable="@android:color/transparent" />
</selector>
最後に、通常 に配置される色を定義しますcolors.xml
。
<resources>
<color name="pressed_color">#FF8E4067</color> <!-- your purple tone already ;) -->
<color name="focussed_color">#DD8E4067</color>
</resources>
私のアプリでは、baboo が提案したように「ActionBar Style Generator」を使用しました。これは、すべてを便利に処理します。この回答では、オーバーフロー メニューのスタイルを構成していると思われる部分を抽出して単純化しました。
3 つの異なるアイテムをスタイリングすることの効果については、いくつかの謎があると思います。
- 私の理解で
android:dropDownListViewStyle
は、ActionBar の「3 つのドット」の後ろに隠れるオーバーフロー メニューが含まれています。
- と混同しないでください
android:actionDropDownStyle
。これは、使用した場合にアプリのナビゲーション ドロップダウンのスタイルに使用されます。actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
- ただし、ハードウェア メニュー ボタンを備えた一部の Android デバイス (Nexus S や Galaxy S3 Mini など) では、「3 つのドット」は表示されず、ハードウェア メニュー ボタンをクリックすると画面の下部からスライドして表示されるオーバーレイ メニューが表示されます。
android:popupMenuStyle
これをスタイルするための正しい属性です。
繰り返しますが、これは私自身のアプリ開発から覚えている限りです。
また、他のスタイル ファイル (構成修飾子を含むフォルダーなど) が、定義したばかりのスタイルを上書きしないことを確認してください。
全体として、これはリスト項目の背景色のみを変更することを理解しています。そこで完全にカスタム ビューを使用するには、カスタム スピナー ビューを作成し、「3 つのドット」アイコンのダミー ボタンを ActionBar に追加して、クリック時にスピナーを開くことができます。