2012-10-13 5 views

risposta

12

Il piccolo triangolo che si desidera modificare si trova sullo sfondo di un widget Spinner in ActionBar. Lo sfondo è un state list drawable. Voci della lista Stato drawable sono drawable 9-patch di come questa (questo particolare è la versione hdpi per lo stato di default per la luce il tema Holo):

enter image description here

Per cambiare il colore del triangolo si deve cambia alcuni set di questi drawable a 9 patch: un drawable per ogni dpi e una combinazione di stati. Avrai anche bisogno di un elenco di stati personalizzati disegnabile come sfondo del widget Spinner.

Per modificare lo sfondo del widget è necessario regolare il tema. Se si utilizza ActionBarSherlock (ABS) modificare l'elemento actionDropDownStyle e per l'oggetto ActionBar nativo modificare l'elemento android:actionDropDownStyle (anche se si utilizza l'ActionBar nativo ABS viene utilizzato per i dispositivi con Android 4.0 e versioni successive).

Il tema dovrebbe essere qualcosa di simile:

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

E MyActionBarSpinnerStyle dovrebbe essere qualcosa di simile:

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

dove al posto di MyDropDownActionBarStyle ci dovrebbe essere qualcosa di simile a Widget.Sherlock.Light.Spinner.DropDown.ActionBar se si utilizza ABS o Widget.Holo.Light.Spinner.DropDown.ActionBar se target solo ActionBar nativo.