我知道这听起来很简单,但是听我说。我有2个复选框,当选择其中一个时我想取消另一个复选框。
我尝试了以下内容:
CheckBox chk1, chk2;
if (chk1.isChecked()) {
chk2.setChecked(false);
}
if (chk2.isChecked()) {
chk1.setChecked(false);
}
我也尝试过:
chk1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
chk2.setChecked(false);
}
});
chk2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
chk1.setChecked(false);
}
});
我知道我应该使用切换按钮,但是复选框适用于设计,因此我正在寻找一种方法来实现这一功能。
有什么想法吗?
答案 0 :(得分:0)
我认为在设计方面,复选框适用于您希望让用户选择多个选项的时间。我认为你应该尝试使用的是radioputton,这是一个链接:
答案 1 :(得分:0)
感谢@NoEm我设法让它正常运行,但实施OnClickListener
是这样的:
chk1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chk1.setChecked(true);
chk2.setChecked(false);
}
});
chk2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chk2.setChecked(true);
chk1.setChecked(false);
}
});
答案 2 :(得分:0)
两种变体: 首先是Java
final CheckBox cb1 = findViewById(R.id.checkBox1);
final CheckBox cb2 = findViewById(R.id.checkBox2);
cb1.setChecked(true);
cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
cb2.setChecked(!isChecked);
}
});
cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
cb1.setChecked(!isChecked);
}
});
或Kotlin为第二
val cb1 = this.findViewById<CheckBox>(R.id.checkBox1)
val cb2 = this.findViewById<CheckBox>(R.id.checkBox2)
cb1.isChecked = true
cb1.setOnCheckedChangeListener { _, isChecked -> cb2.isChecked = !isChecked }
cb2.setOnCheckedChangeListener { _, isChecked -> cb1.isChecked = !isChecked }