Как изменить «цвет маленького треугольника» на панели действий NAVIGATION_MODE_LIST

После того, как я установил action bar на NAVIGATION_MODE_LIST

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

а затем установите для него адаптер.

Список отображается, как и ожидалось, но мне нужно изменить цвет «маленького треугольника» в списке, так как цвет по умолчанию очень близок к моему цвету фона.

Возможно ли это сделать, если да, то как я могу это сделать?


person Pongpat    schedule 13.10.2012    source источник


Ответы (1)


Маленький треугольник, который вы хотите изменить, находится на фоне виджета Spinner в ActionBar. Фон представляет собой выводимый список состояний. Элементы списка состояний, которые можно рисовать, представляют собой 9-патч-рисунки, подобные этому (этот конкретный вариант является версией hdpi для состояния по умолчанию для светлой темы Holo):

введите здесь описание изображения

Чтобы изменить цвет треугольника, вам нужно изменить несколько наборов этих 9-патч-рисунков — по одному для каждого 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>

Где вместо MyDropDownActionBarStyle должно быть что-то вроде Widget.Sherlock.Light.Spinner.DropDown.ActionBar, если вы используете ABS или Widget.Holo.Light.Spinner.DropDown.ActionBar, если вы ориентируетесь только на нативную панель действий.

person Tomik    schedule 13.10.2012