android custom radio button not getting checked

2020-02-02 03:36发布

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.

2条回答
Deceive 欺骗
2楼-- · 2020-02-02 03:44

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>
查看更多
欢心
3楼-- · 2020-02-02 03:48

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.

查看更多
登录 后发表回答