Search code examples
androidandroid-stylesandroid-togglebutton

How to create custom ToggleButton style in Android?


I am wanting to create a custom ToggleButton style, mainly so I can change the minimum height and text size depending on the screen size.

I have already done this for Button:

styles.xml

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="buttonStyle">@style/MyButtonStyle</item>
</style>

<style name="MyButtonStyle" parent="Widget.AppCompat.Button">
    <item name="android:minHeight">@dimen/button_min_height</item>
    <item name="android:textSize">@dimen/button_text_size</item>
</style>

And I am now wanting to do a similar thing for ToggleButton. I have tried this...

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="buttonStyle">@style/MyButtonStyle</item>
    <item name="android:buttonStyleToggle">@style/MyToggleButtonStyle</item>
</style>

<style name="MyToggleButtonStyle" parent="Widget.AppCompat.ToggleButton">
    <item name="android:minHeight">@dimen/button_min_height</item>
    <item name="android:textSize">@dimen/button_text_size</item>
</style>

...but Widget.AppCompat.ToggleButton doesn't exist. So what changes do I need to make so I can control the minimum height and text size of my ToggleButtons like I already do for Buttons?

I would prefer an approach similar to the above, not only for consistency but so I don't have to go through all my layout files and update the ToggleButtons' xml individually.


Solution

  • This works for me.

    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="buttonStyle">@style/MyButtonStyle</item>
        <item name="android:buttonStyleToggle">@style/MyToggleButtonStyle</item>
    </style>
    
    <style name="MyToggleButtonStyle" parent="android:Widget.Button.Toggle">
        <item name="android:minHeight">@dimen/button_min_height</item>
        <item name="android:textSize">@dimen/button_text_size</item>
    </style>