我将action bar
设置为NAVIGATION_MODE_LIST
getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
然后为它设置适配器。
列表按预期显示,但我需要更改列表的“小三角”颜色,因为默认颜色非常接近我的背景颜色。
是否可以这样做,如果是这样,我该怎么做?
答案 0 :(得分:12)
您要更改的小三角形位于Spinner
中ActionBar
小部件的背景中。背景是state list drawable。可绘制状态列表的项目是像这样的9-patch drawables(这个特别的一个是Holo light主题默认状态的hdpi版本):
要更改三角形的颜色,您必须更改这些9-patch drawable的几组 - 每个dpi和状态组合可绘制一组。您还需要将自定义状态列表drawable作为Spinner
小部件的背景。
要更改窗口小部件背景,您必须调整主题。如果您正在使用ActionBarSherlock(ABS)更改actionDropDownStyle
项,并且对于本机ActionBar更改android:actionDropDownStyle
项(即使您使用ABS本机ActionBar也用于运行Android 4.0及更高版本的设备)。 / p>
主题应该是:
<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,则MyDropDownActionBarStyle
代替Widget.Sherlock.Light.Spinner.DropDown.ActionBar
,如果仅定位原生ActionBar,则应该Widget.Holo.Light.Spinner.DropDown.ActionBar
。