2012-01-26 45 views
23

Estoy intentando cambiar el color del efecto de vuelco cuando toca un elemento de la barra de acciones. En mi Galaxy Nexus con 4.0.2 es una especie de sombreado de color turquesa que quiero que sea de otro color.Cómo puedo cambiar el color del efecto táctil de la barra de acciones en Android 3.0 y superior

Para ser claros, hablo de los elementos de ActionBar aquí, no de las pestañas de navegación.

Lo tengo trabajando bajo la librería de compatibilidad, pero para Android 3.0 y superior, es decir, la ActionBar "real", simplemente no puedo encontrar la manera de hacerlo.

¿Alguien sabe si esto se puede lograr?

Respuesta

45

La barra de acciones nativa usa el atributo de tema selectableItemBackground para el dibujo de fondo del elemento de acción. Esto debería ser una lista de estado dibujable.

Aquí está la declaración de Theme.Holo:

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

Y su dibujable 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

Gracias por su rápida respuesta. Pero si intento sobrescribir este atributo en el estilo con algo como Me aparece un error: no se encontraron recursos que coincidan con el nombre de pila: attr 'seleccionableItemBackground'. ¿Cómo o dónde puedo anular este atributo? – Alf

+0

Lo sentimos, tendrás que usar 'name =" android: seleccionableItemBackground "'. No está especificado en la versión del tema de la plataforma Android porque su paquete predeterminado ya es 'android'. Actualicé la respuesta. –

+0

Funciona perfectamente, muchas gracias! – Alf

Cuestiones relacionadas