如果已在radiogroup

时间:2017-05-02 06:09:05

标签: android radio-button radio-group

我在radiogroup中有两个radiobutton,最初都是未经检查的。如果已经检查过,我想取消选中radiobutton。我试过但我无法做到。当我选择任何单选按钮然后它没有改变状态到第一次检查,如果我第二次选择相同的单选按钮然后它正在改变其状态,如果我选择其他单选按钮如果选中一个按钮那么它也没有改变国家第一次和所有按钮取消选中任何人都可以帮助我吗?我的代码在下面给出......

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
pus="";

boolean isChecked = checkedRadioButton.isChecked();
 if(isChecked){
     checkedRadioButton.setChecked(false);

 }else{
     checkedRadioButton.setChecked(true);

 }
}
 Toast.makeText(context, pus, Toast.LENGTH_SHORT).show();
}
});








 <RadioGroup
    android:id="@+id/rdbt_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="5dp"

    android:gravity="center"
    android:orientation="horizontal" >

    <RadioButton
    android:id="@+id/radio_no"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/rbtn_selector"
    android:button="@null"
    android:gravity="center"
    android:paddingBottom="5dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="5dp"
    android:clickable="true"
    android:textColor="@drawable/rbtn_textcolor_selector"
    android:textSize="15sp" />

    <RadioButton
    android:id="@+id/radio_yes"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:button="@null"
    android:clickable="true"
    android:textSize="15sp"
    android:background="@drawable/rbtn_selector"
    android:textColor="@drawable/rbtn_textcolor_selector"
    android:padding="5dp"
    android:gravity="center"
    />


    </RadioGroup>

5 个答案:

答案 0 :(得分:1)

你无法取消选中&#34;一个单选按钮。但您可以使用RadioGroup清除clearCheck

答案 1 :(得分:1)

我建议您改用 CheckBox 。希望对您有帮助

答案 2 :(得分:0)

RadioGroup是选择两个选项之一的意思,你不应该打扰视图的常规行为。用户强制选择两个选项之一。将性别视为放射性组,可能有两三种选择你必须强制选择其中一种。这可以通过简单地在xml

中添加以下代码来实现
<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="16dp"
    app:layout_constraintLeft_toLeftOf="parent">

    <RadioButton
      android:id="@+id/radioButton"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="RadioButton"
      tools:layout_editor_absoluteX="126dp"
      tools:layout_editor_absoluteY="83dp"/>

    <RadioButton
      android:id="@+id/radioButton2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="RadioButton"
      tools:layout_editor_absoluteX="172dp"
      tools:layout_editor_absoluteY="127dp"/>
  </RadioGroup>

和活动类

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // checkedId is the RadioButton selected
            // you can check if radiobutton is checked or unchecked here , do needful codes
        }
    });

答案 3 :(得分:0)

我只有一个单选按钮,我真的不想制作一个单选按钮组。 onClick和if和else检查无法手动检查和取消选中它。我用onRadioButtonClick听众等阅读了几篇帖子。

首先我尝试交换复选框 - &gt;同样的问题。然后我尝试了CheckedTextView,你知道什么,它实际上像切换一样工作。所以基本上我添加了一个单选按钮,然后将文本留空,在它旁边添加了checkedTextView(重叠),然后将checkedTextView的onClick函数链接到切换函数 - &gt;

public void toggle(View view)
{ 
    if(checkedTextView.isChecked())
    { 
        checkedTextView.setChecked(false); 
        actualRadioBtn.setChecked(false);
    }
    else
    {
        checkedTextView.setChecked(true);
        actualRadioBtn.setChecked(true);
    }
}

然后在您检查是否选中该单选按钮的功能中,您只需使用

即可
if(actualRadioBtn.isChecked())....

答案 4 :(得分:0)

我知道回答这个问题有点晚了,但是,如果它可以帮助别人,我会很高兴的。

只需创建一个扩展RadioButtonAppCompatRadioButton的自定义类并覆盖toggle()方法即可。

public class UncheckableRadioButton extends AppCompatRadioButton {

    public UncheckableRadioButton(Context context) {
        super(context);
    }

    public UncheckableRadioButton(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public UncheckableRadioButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void toggle() {

        if (isChecked()) {
            if (getParent() != null && getParent() instanceof RadioGroup) {
                ((RadioGroup) getParent()).clearCheck();
            }
        } else {
            super.toggle();
        }
    }

    @Override
    public CharSequence getAccessibilityClassName() {
        return UncheckableRadioButton.class.getName();
    }
}

如果您选中radioGroup.getCheckedRadioButtonId(),这也将起作用。