在我设置action bar
为NAVIGATION_MODE_LIST
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
然后为它设置一个适配器。
该列表按预期显示,但我需要更改列表的“小三角形”颜色,因为默认颜色非常接近我的背景颜色。
是否有可能做到这一点,如果可以,我该怎么做?
在我设置action bar
为NAVIGATION_MODE_LIST
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
然后为它设置一个适配器。
该列表按预期显示,但我需要更改列表的“小三角形”颜色,因为默认颜色非常接近我的背景颜色。
是否有可能做到这一点,如果可以,我该怎么做?
您要更改的小三角形Spinner
位于ActionBar
. 背景是一个状态列表 drawable。状态列表drawable的项目是9-patch drawables,就像这个(这个特定的一个是Holo light主题默认状态的hdpi版本):
要更改三角形的颜色,您必须更改这些 9-patch 可绘制对象中的几组 - 每个 dpi 和状态组合的可绘制对象。您还需要可绘制的自定义状态列表作为Spinner
小部件的背景。
要更改小部件背景,您必须调整主题。如果您使用的是ActionBarSherlock (ABS) 更改actionDropDownStyle
项和本机 ActionBar 更改android:actionDropDownStyle
项(即使您使用 ABS,本机 ActionBar 也用于运行 Android 4.0 及更高版本的设备)。
主题应该是这样的:
<style name="MyTheme" parent="SomeParentStyle>
<item name="actionDropDownStyle">@style/MyActionBarSpinnerStyle</item><!-- if you use ABS -->
<item name="android:actionDropDownStyle">@style/MyActionBarSpinnerStyle</item>
</style>
MyActionBarSpinnerStyle
应该是这样的:
<style name="MyActionBarSpinnerStyle" parent="@style/MyDropDownActionBarStyle">
<item name="android:background">@drawable/my_custom_state_list_drawable</item>
</style>
如果您使用 ABS 或仅针对本机 ActionBar MyDropDownActionBarStyle
,应该在哪里代替。Widget.Sherlock.Light.Spinner.DropDown.ActionBar
Widget.Holo.Light.Spinner.DropDown.ActionBar