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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With