Android:选中复选框并禁用

时间:2012-11-19 16:23:14

标签: android android-ui android-checkbox

我想在4个复选框中只选择一个复选框。我的意思是,如果选中一个复选框,则应禁用其他复选框。如何实现这个目标?

2 个答案:

答案 0 :(得分:3)

如果您使用通用onClick,则可能会遇到其他元素的未来问题,点击您应用中的处理程序。我会将android:onClick="onCheckboxClicked"添加到xml文件中的每个CheckBox。然后添加我在下面显示的方法,根据你的id等定制。

<CheckBox android:id="@+id/chkBx1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Option 1"
        android:onClick="onCheckboxClicked"/>
<CheckBox android:id="@+id/chkBx2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Option 2"
        android:onClick="onCheckboxClicked"/>
<CheckBox android:id="@+id/chkBx3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/Option 3"
        android:onClick="onCheckboxClicked"/>

主要活动:

public void onCheckboxClicked(View v) {
    CheckBox chk1 = (CheckBox)findViewById(R.id.chkBx1);
    CheckBox chk2 = (CheckBox)findViewById(R.id.chkBx2);
    CheckBox chk3 = (CheckBox)findViewById(R.id.chkBx3);

    switch (v.getId()) {
    case R.id.chkBx1:
        if (chk1.isChecked()) {
            chk2.setEnabled(false);
            chk3.setEnabled(false);
        } else {
            chk1.setEnabled(true);
            chk2.setEnabled(true);
            chk3.setEnabled(true);
        }
        break;

    case R.id.chkBx2:
        if (chk2.isChecked()) {
            chk1.setEnabled(false);
            chk3.setEnabled(false);
        } else {
            chk1.setEnabled(true);
            chk2.setEnabled(true);
            chk3.setEnabled(true);
        }
        break;

    case R.id.chkBx3:
        if (chk3.isChecked()) {
            chk1.setEnabled(false);
            chk2.setEnabled(false);
        } else {
            chk1.setEnabled(true);
            chk2.setEnabled(true);
            chk3.setEnabled(true);
        }
        break;

    }
}

答案 1 :(得分:1)

您可以使用单选按钮,通过更改按钮属性使其看起来像复选框

 <RadioButton android:id="@+id/chkBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    andriod:button="@drawable/youcheckboximage"
    />