要更改溢出列表项的颜色,请将两项添加到您的应用程序主题中,该主题通常定义在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 文件夹中创建一个可绘制的选择器,其中包含:
<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”,它可以方便地为您处理一切。对于这个答案,我只是提取并简化了我认为构成溢出菜单样式的部分。
我认为样式化三个不同项目的效果有些神秘:
- 据我了解,
android:dropDownListViewStyle
包括隐藏在 ActionBar 中“三个点”后面的溢出菜单。
- 不要与 混淆
android:actionDropDownStyle
,它用于应用导航下拉菜单的样式,以防您使用actionBar.setNavigationMode(NAVIGATION_MODE_LIST)
- 但是,某些带有硬件菜单按钮的 Android 设备(例如 Nexus S 或 Galaxy S3 Mini)不显示“三个点”,而是在单击硬件菜单按钮时从屏幕底部滑入的叠加菜单。
android:popupMenuStyle
是设置此样式的正确属性。
同样,这只是我从自己的应用程序开发中所记得的。
此外,请确保检查没有其他样式文件(例如具有配置限定符的文件夹)覆盖您刚刚定义的样式。
总而言之,我知道这只会改变列表项的背景颜色。要在其中使用完全自定义的视图,您可以创建自定义微调器视图,将带有“三个点”图标的虚拟按钮添加到 ActionBar 并在单击时打开微调器。