选择另一个时取消选中复选框
Un-check Checkbox when selecting another
我知道这听起来很简单,但听我说完。我有 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);
}
});
我知道我应该改用切换按钮,但复选框与设计相得益彰,所以我正在寻找一种方法来实现它。
有什么想法吗?
我认为在设计方面,复选框用于让用户选择多个选项。我认为你应该尝试使用 radioputton,这里是 link:
多亏了 @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);
}
});
两种变体:
首先是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 }
我知道这听起来很简单,但听我说完。我有 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);
}
});
我知道我应该改用切换按钮,但复选框与设计相得益彰,所以我正在寻找一种方法来实现它。
有什么想法吗?
我认为在设计方面,复选框用于让用户选择多个选项。我认为你应该尝试使用 radioputton,这里是 link:
多亏了 @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);
}
});
两种变体: 首先是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 }