android custom radio button not getting checked
Asked Answered
Q

2

0

I have created radio group with custom layout i.e. custom button.

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

<RadioGroup
    android:id="@+id/radio_group_rating"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="horizontal"
        android:weightSum="3" >

        <RadioButton
            android:id="@+id/radio_platinum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:clickable="true"
            android:drawablePadding="10dp"
            android:drawableTop="@drawable/star_small_dis"
            android:gravity="center"
            android:text="@string/platinum" />

        <RadioButton
            android:id="@+id/radio_gold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:clickable="true"
            android:drawablePadding="10dp"
            android:drawableTop="@drawable/star_small_dis"
            android:gravity="center"
            android:text="@string/gold" />

        <RadioButton
            android:id="@+id/radio_silver"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:button="@null"
            android:clickable="true"
            android:drawablePadding="10dp"
            android:drawableTop="@drawable/star_small_dis"
            android:gravity="center"
            android:text="@string/silver" />
    </LinearLayout>
</RadioGroup>

<Button
    android:id="@+id/btn_submit"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_below="@id/radio_group_rating"
    android:text="@string/submit" />

And in Activity, I have below code,

final Dialog dialog = new Dialog(mActivity);
    dialog.setContentView(R.layout.rating_cust_dialog_layout);
    radioGroupRating = (RadioGroup) dialog.findViewById(R.id.radio_group_rating);
    Button btnSubmit = (Button) dialog.findViewById(R.id.btn_submit);
    btnSubmit.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            int selectedRadioId = radioGroupRating.getCheckedRadioButtonId();
            View radioButton = radioGroupRating.findViewById(selectedRadioId);
            Integer selctedPosition = radioGroupRating.indexOfChild(radioButton);
            dialog.dismiss();
        }
    });
    dialog.show();

My issue is radio buttons are not getting clicked. I thought it's because of android:button="@null" So I replaced it with android:button="@drawable/star_dis" but still not getting clicked.

Quenelle answered 20/1, 2015 at 18:41 Comment(0)
S
0

Its the android:button="@null", please remove it from the xml file completely. Try using this simple xml layout.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RadioGroup
        android:id="@+id/radio_group_rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"  >

        <RadioButton
            android:id="@+id/radio_platinum"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="platinum" />

        <RadioButton
            android:id="@+id/radio_gold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="gold" />

        <RadioButton
            android:id="@+id/radio_silver"
           android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="silver" />
        </RadioGroup>

    <Button
        android:id="@+id/btn_submit"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="submit" />
</LinearLayout>
Saltandpepper answered 20/1, 2015 at 19:20 Comment(3)
thanks for your help @Divya, but I wanted the exact same design. So i think now I have to handle the view clicks and write my own logic :(Quenelle
I think just removing the android:button="@null", should solve the issue. Happy to help :)Saltandpepper
no dear... after removing it, click works but the default circle of radio button starts appearing... i.e. Back to square one :)Quenelle
F
0

Only difference to my code is that I don't put clickable="true" in xml, if RadioGroup handles touch event by itself to manage child radio buttons you should remove that attribute as clickable is generally set to true automatically when you set an OnClickListener.

Formica answered 21/1, 2015 at 8:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.