如何在操作栏NAVIGATION_MODE_LIST中更改"小三角颜色"

Pon*_*pat 5 android android-spinner android-actionbar

我设置action bar为之后NAVIGATION_MODE_LIST

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
Run Code Online (Sandbox Code Playgroud)

然后为它设置适配器.

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

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

Tom*_*mik 12

您要更改的小三角形位于Spinner窗口小部件的背景中ActionBar.背景是一个可绘制州名单.可绘制状态列表的项目是像这样的9-patch drawables(这个特别的一个是Holo light主题的默认状态的hdpi版本):

在此输入图像描述

要更改三角形的颜色,您必须更改这些9-patch drawable的几组 - 每个dpi和状态组合可绘制一组.您还需要自定义状态列表drawable作为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>
Run Code Online (Sandbox Code Playgroud)

而且MyActionBarSpinnerStyle应该是这样的:

<style name="MyActionBarSpinnerStyle" parent="@style/MyDropDownActionBarStyle">
    <item name="android:background">@drawable/my_custom_state_list_drawable</item>
</style>
Run Code Online (Sandbox Code Playgroud)

而不是MyDropDownActionBarStyle应该有像Widget.Sherlock.Light.Spinner.DropDown.ActionBar你使用ABS或Widget.Holo.Light.Spinner.DropDown.ActionBar你只定位本机ActionBar的东西.