style studio icon color change android button styles android-drawable xml-drawable

studio - icon button android



Botón Android seleccionar y presionar dibujable (2)

El primer elemento de su selector solo se usa cuando se presiona Y se selecciona el botón. Si desea usar button_sel cuando se presiona o se selecciona su botón, debe hacer algo como esto:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_sel" android:state_selected="true" /> <item android:drawable="@drawable/button_sel" android:state_pressed="true" /> <item android:drawable="@drawable/button_unsel" /> </selector>

Los elementos se evalúan de arriba a abajo, el último es el predeterminado. Aunque no estoy seguro si state_selected tiene sentido para los botones.

Estoy tratando de hacer un botón con la marca de estado y seleccionar, ya hice lo mismo con las pestañas y funciona, pero no sé por qué aquí no funciona. Lo he hecho así:

button_sel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="@color/azulado" android:endColor="@color/azulBrillante" android:angle="270" /> <corners android:radius="@dimen/corner_radius" /> <stroke android:width="2px" android:color="@color/blanco" /> </shape>

button_unsel.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="@color/botonesD" android:endColor="@color/botones" android:angle="270" /> <corners android:radius="@dimen/corner_radius" /> <stroke android:width="2px" android:color="@color/blanco" /> </shape>

Y el selector, button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_sel" android:state_selected="true" android:state_pressed="true"/> <item android:drawable="@drawable/button_unsel" android:state_selected="false" android:state_pressed="false"/> </selector>

Y aquí llamo el dibujable como fondo:

<style name="button"> <item name="android:background">@drawable/button</item> <item name="android:textSize">@dimen/text_size</item> <item name="android:padding">@dimen/padding_button</item> <item name="android:textColor">@color/blanco</item> </style>

¡¡¡¡Gracias!!!!


Puede usar el elemento en línea de forma.

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape....> </item> <item android:state_selected="true" > <shape....> </item> <item android:state_pressed="true" android:state_selected="true" > <shape...> </item> </selector>

Para la muestra:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" > <shape android:shape="rectangle"> <gradient android:startColor="@color/md_amber_300" android:endColor="@color/md_amber_50" android:angle="270" /> <corners android:radius="@dimen/fab_margin" /> <stroke android:width="2px" android:color="@color/primaryColorDark_orange" /> </shape> </item> <item android:state_pressed="true" > <shape android:shape="rectangle"> <gradient android:startColor="@color/md_amber_300" android:endColor="@color/md_amber_50" android:angle="270" /> <corners android:radius="@dimen/fab_margin" /> <stroke android:width="2px" android:color="@color/primaryColorDark_orange" /> </shape> </item> <item android:state_pressed="true" android:state_selected="true" > <shape android:shape="rectangle"> <gradient android:startColor="@color/md_teal_500" android:endColor="@color/md_blue_400" android:angle="270" /> <corners android:radius="@dimen/fab_margin" /> <stroke android:width="2px" android:color="@color/md_amber_A400" /> </shape> </item> </selector>