Tuesday 1 May 2018

Radio Times, Radio Measures.


There are times when you find yourself in a state where things are out of control just like a RadioButton.

Weird behaviours crop out while you try to add a radio button to your layout dynamically or inflated from layout.

Some times the 
button's drawables doesn't appear at all, sometimes it appears unexpected. 

So for such a scenario, there is a cure in few steps as follows:

1. Try to use AppCompatRadioButton from support library. Set a custom style to it which extends from "@android:style/Widget.Holo.CompoundButton.RadioButton"

<style name="RadioButtonStyle" parent="@android:style/Widget.Holo.CompoundButton.RadioButton">
        <item name="buttonTint">@color/coke_red</item>
        <item name="android:textSize">@dimen/dialog_common_transaction_item_details_text_view</item>
        <item name="android:typeface">normal</item>
        <item name="android:button">@drawable/custom_radio_selector</item>
</style>

2. Add two image drawables, one for checked and other for unchecked state.

3. Create a custom drawable selector "custom_radio_selector.xml"


<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_checked="true" android:state_window_focused="false"

        android:drawable="@drawable/ic_radio_on" />

    <item android:state_checked="false" android:state_window_focused="false"

        android:drawable="@drawable/ic_radio_off" />


    <item android:state_checked="true" android:state_pressed="true"

        android:drawable="@drawable/ic_radio_on" />

    <item android:state_checked="false" android:state_pressed="true"

        android:drawable="@drawable/ic_radio_off" />


    <item android:state_checked="true" android:state_focused="true"

        android:drawable="@drawable/ic_radio_on" />

    <item android:state_checked="false" android:state_focused="true"

        android:drawable="@drawable/ic_radio_off" />


    <item android:state_checked="false" android:drawable="@drawable/ic_radio_off" />

    <item android:state_checked="true" android:drawable="@drawable/ic_radio_on" />

</selector>



where ic_radio_off.png and ic_radio_on.png are the image drawbles added as required.

Demo:




2 comments:

  1. Yes it saved me from spending lot of time on the internet. It works !!!

    ReplyDelete
    Replies
    1. Cool. But I'm sure you would have figured it out yourself eventually had it not been here.

      Delete