2012-10-13 12 views

Odpowiedz

12

Mały trójkąt, który chcesz zmienić, jest w tle widgetu Spinner w postaci ActionBar. Tło to state list drawable. Pozycje na liście stan rozciągliwej są kanału alfa 9-płatkowe, takie jak ten jeden (ten konkretny jeden jest wersja hdpi do stanu domyślnego dla Holo lekkiego tematu):

enter image description here

Aby zmienić kolor trójkąta trzeba zmień kilka zestawów tych 9-plasterkowych rysunków - jeden losowy dla każdej dpi i kombinacji stanów. Będziesz także potrzebować niestandardowej listy stanów do rysowania, która będzie tłem dla widżetu Spinner.

Aby zmienić tło widgetu, musisz dostosować motyw. Jeśli używasz elementu ActionBarSherlock (ABS) zmień element actionDropDownStyle i dla natywnego elementu ActionBar zmień element android:actionDropDownStyle (nawet jeśli używasz rodzimej biblioteki ActionBar, jest ona używana dla urządzeń z Androidem 4.0 lub nowszym).

Tematem powinno być coś takiego:

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

I MyActionBarSpinnerStyle powinno być coś takiego:

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

Gdzie zamiast MyDropDownActionBarStyle tam powinno być coś jak Widget.Sherlock.Light.Spinner.DropDown.ActionBar jeśli używasz ABS lub Widget.Holo.Light.Spinner.DropDown.ActionBar jeśli ciebie docelowy tylko macierzysty ActionBar.

Powiązane problemy