android - switch - toggle buttons
Android: cambiar el color del texto de ToggleButton (1)
Para crear un ToggleButton personalizado, he definido un nuevo estilo en /res/values/styles.xml
:
<style name="myToggleButton">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">#000000</item>
<item name="android:background">@drawable/my_toggle_button</item>
</style>
y luego uso un selector para especificar cómo se ven los estados del botón en /res/drawable/my_toggle_button.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<shape>
[...]
</shape>
</item>
<item android:state_checked="false"
<shape>
[...]
</shape>
</item>
</selector>
¿Cómo puedo modificar esta configuración para alternar el color del texto del botón cuando cambia el estado?
Cree una lista de estados similar para los colores de texto que desea, y colóquela en res/color
, por ejemplo
res/color/toggle_color.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="#070" />
<!-- Default State -->
<item android:color="#A00" />
</selector>
A continuación, establezca este recurso como el color del texto del botón:
<item name="android:textColor">@color/toggle_color</item>
PD: es una buena práctica que el último elemento de un selector no tenga ningún indicador de estado adjunto (es decir, un estado predeterminado) en lugar de definirlo con la inversa de los estados anteriores.