2012-10-13 5 views
5

Después me puse a action barNAVIGATION_MODE_LISTcómo puedo cambiar el 'poco de color triángulo' en la barra de acción NAVIGATION_MODE_LIST

getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 

y después fijar un adaptador para ello.

La lista aparece como se esperaba, pero tengo que cambiar el color 'pequeño triángulo' de la lista como el color predeterminado está muy cerca de mi color de fondo.

¿Es posible hacer esto? Si es así, ¿cómo puedo hacerlo?

Respuesta

12

El pequeño triángulo que desea cambiar está en el fondo de un widget Spinner en ActionBar. El fondo es un state list drawable. Los productos de la lista del estado dibujable son dibujables 9-parche como este (éste en particular es la versión IPAP para el estado por defecto para el tema de la luz Holo):

enter image description here

Para cambiar el color del triángulo que tiene que cambie algunos conjuntos de estos diseños de 9 parches, uno dibujable para cada dpi y una combinación de estados. También necesitará que la lista de estado personalizado pueda ser dibujada como el fondo del widget Spinner.

Para cambiar el fondo del widget, debe ajustar el tema. Si está utilizando ActionBarSherlock (ABS) cambie el artículo actionDropDownStyle y cambie el elemento android:actionDropDownStyle nativo ActionBar (incluso si usa el ABS ActionBar nativo se usa para dispositivos con Android 4.0 y versiones posteriores).

El tema debe ser algo como:

<style name="MyTheme" parent="SomeParentStyle> 
    <item name="actionDropDownStyle">@style/MyActionBarSpinnerStyle</item><!-- if you use ABS --> 
    <item name="android:actionDropDownStyle">@style/MyActionBarSpinnerStyle</item> 
</style> 

Y MyActionBarSpinnerStyle debería ser algo como:

<style name="MyActionBarSpinnerStyle" parent="@style/MyDropDownActionBarStyle"> 
    <item name="android:background">@drawable/my_custom_state_list_drawable</item> 
</style> 

donde en lugar de MyDropDownActionBarStyle no debería ser algo así como Widget.Sherlock.Light.Spinner.DropDown.ActionBar si utiliza el ABS o Widget.Holo.Light.Spinner.DropDown.ActionBar si Dirígete solo a ActionBar nativo.

Cuestiones relacionadas