2012-01-26 13 views
23

Próbuję zmienić kolor efektu przewracania po dotknięciu elementu paska akcji. Na moim Galaxy Nexusie z 4.0.2 jest to trochę turkusowe cieniowanie, które chcę mieć w innym kolorze.Jak zmienić kolor efektu dotykowego paska akcji w Androidzie 3.0 i nowszych

Dla jasności, mówię tu o elementach ActionBar, a nie o kartach nawigacyjnych.

Mam to działa w ramach biblioteki kompatybilności, ale dla Androida 3.0 i wyższych, tj. "Prawdziwy" ActionBar, po prostu nie mogę dowiedzieć się, jak to zrobić.

Czy ktoś wie, czy i jak można to osiągnąć?

Odpowiedz

45

Natywny pasek akcji wykorzystuje atrybut motywu selectableItemBackground do rysowania tła elementu akcji. Powinien to być wyciągany z listy stanów.

Oto deklaracja w Theme.Holo:

<style name="Theme.Holo"> 
    <!-- bunch of things --> 
    <item name="android:selectableItemBackground">@android:drawable/item_background_holo_dark</item> 
    <!-- bunch of things --> 
</style> 

I jego odkształcalne XML:

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
      android:exitFadeDuration="@android:integer/config_mediumAnimTime"> 

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. --> 
    <item android:state_focused="true" android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_disabled_holo_dark" /> 
    <item android:state_focused="true" android:state_enabled="false"        android:drawable="@drawable/list_selector_disabled_holo_dark" /> 
    <item android:state_focused="true"        android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" /> 
    <item android:state_focused="false"        android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition_holo_dark" /> 
    <item android:state_focused="true"                android:drawable="@drawable/list_focused_holo" /> 
    <item                       android:drawable="@color/transparent" /> 
</selector> 
+0

Dzięki za szybką odpowiedź. Ale jeśli próbuję nadpisać ten atrybut w stylu z czymś takim jak Wystąpił błąd: nie znaleziono zasobu pasującego do podanej nazwy: attr "selectableItemBackground". Jak lub gdzie mogę przesłonić ten atrybut? – Alf

+0

Przepraszamy, musisz użyć 'name =" android: selectableItemBackground "'. Nie określono go w wersji na platformę Android, ponieważ jego domyślny pakiet jest już "androidem". Zaktualizowałem odpowiedź. –

+0

Działa doskonale, dziękuję bardzo! – Alf

Powiązane problemy