schemas radius layerlist example color android xml drawable

radius - schemas android



Cambia el tinte de dibujable en xml selector. (2)

¿Has probado con un selector ?

Puedes encontrar algunos ejemplos HERE

Tengo un botón con el fondo definido en xml. Me gustaría tintar el botón según el estado actual en el que se encuentra, es decir, presionado, enfocado, normal.

Aquí está mi archivo xml a continuación. Además, mi colored_tint_dark , y colored_tint son colores translúcidos que estoy tratando de dibujar sobre la imagen dibujable que llamo desde la carpeta de recursos. Aquí está el problema. Cuando la IU se carga por primera vez, la imagen tiene el tinte apropiado, pero después de presionarla, el estado presionado no muestra ningún tinte, entonces el estado normal no muestra ningún tinte.

<?xml version="1.0" encoding="utf-8"?>

<item android:state_pressed="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint" android:startColor="@color/colored_tint" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:state_focused="true" android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint" android:startColor="@color/colored_tint" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item android:drawable="@drawable/rounded_grayscale_pinstripe_button"> <shape> <gradient android:endColor="@color/colored_tint_dark" android:startColor="@color/colored_tint_dark" android:angle="270" /> <stroke android:width="0dp" android:color="@color/colored_tint_dark" /> <corners android:radius="0dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item>

Sé que hay soluciones para esto en java, pero estoy buscando específicamente una solución en xml. Gracias.


Crea un selector tint_menu_item.xml:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/white" android:state_pressed="true" /> <item android:color="@color/white" android:state_activated="true" /> <item android:color="@color/green" /> </selector>

(En mi ejemplo, la imagen es blanca cuando está seleccionada, y verde cuando no está seleccionada)

Luego, en su xml, puede agregar el atributo de tinte a ImageView:

<ImageView android:layout_width="30dp" android:layout_height="30dp" android:tint="@color/tint_menu_item" android:src="@drawable/ic_menu_home" />

También puede usar este selector en un TextView usando textColor attibute:

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/tint_menu_item" />