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