在将action bar设置为NAVIGATION_MODE_LIST之后

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

然后为其设置适配器。

该列表按预期显示,但是我需要更改列表的“小三角”颜色,因为默认颜色非常接近我的背景颜色。

是否可以这样做,如果可以,我该怎么做?

最佳答案

您要更改的小三角形位于Spinner中的ActionBar小部件的背景中。背景是state list drawable。状态列表可绘制的项目是这样的 9-patch 可绘制的项目(此特定项目是Holo light主题的默认状态的hdpi版本):

要更改三角形的颜色,您必须更改这些9色可绘制图形的几套-每个dpi和状态组合一个图形。您还需要可绘制的自定义状态列表,以作为Spinner小部件的背景。

要更改小部件背景,您必须调整主题。如果您使用ActionBarSherlock(ABS),请更改actionDropDownStyle项,对于 native ActionBar,请更改android:actionDropDownStyle项(即使您使用ABS, native 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,则应使用MyDropDownActionBarStyle代替Widget.Sherlock.Light.Spinner.DropDown.ActionBar;如果仅将 native ActionBar作为目标,则应使用Widget.Holo.Light.Spinner.DropDown.ActionBar

10-07 19:45
查看更多