Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: toggle text color of ToggleButton

Tags:

To create a custom ToggleButton, I've defined a new style in /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> 

and I then use a selector to specify how the button's states look in /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> 

How can I modify this setup to toggle the text color of the button when the state changes?

like image 377
1'' Avatar asked Dec 28 '12 05:12

1''


1 Answers

Create a similar state list for the text colors you would like, and place it in res/color, e.g.

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> 

Then set this resource as the text color of the button:

<item name="android:textColor">@color/toggle_color</item> 

P.S., it's good practice to have the last item in a selector not have any state flags attached (i.e. a default state) rather than defining it with the inverse of the above states.

like image 53
devunwired Avatar answered Oct 01 '22 16:10

devunwired