android做互斥按钮,android如何让checkbox实现互斥

b4[0].setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {if(isChecked) {for(int i = 0; i < 5; i++) {if(i != 0) {if(b4[i].isChecked()) b4[i].setChecked(false);

}

}

}

}

});

b4[1].setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {if(isChecked) {for(int i = 0; i < 5; i++) {if(i != 1) {if(b4[i].isChecked()) b4[i].setChecked(false);

}

}

}

}

});/*b1[1].setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

for(int i = 0; i < 5; i++) {

if (i != 1)

b1[i].setChecked(false);

}

if (!b1[1].isPressed())

b1[1].setChecked(true);

}

});*/b4[2].setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {if(isChecked) {for(int i = 0; i < 5; i++) {if(i != 2) {if(b4[i].isChecked()) b4[i].setChecked(false);

}

}

}

}

});

b4[3].setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {if(isChecked) {for(int i = 0; i < 5; i++) {if(i != 3) {if(b4[i].isChecked()) b4[i].setChecked(false);

}

}

}

}

});

b4[4].setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {

@Overridepublic void onCheckedChanged(CompoundButton buttonView, booleanisChecked) {if(isChecked) {for(int i = 0; i < 5; i++) {if(i != 4) {if(b4[i].isChecked()) b4[i].setChecked(false);

}

}

}

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
lvgl checkbox 实现互斥,可以通过给所有的 checkbox 绑定同一个回调函数,在回调函数中,对所有的 checkbox 进行遍历,判断哪些 checkbox 被选中,如果有多个被选中,则取消除最后选择的那一个以外的所有选择。同时,也可以在回调函数中对被选中的 checkbox 进行一些后续操作。下面是一个示例代码: ```c /* 回调函数 */ static void checkbox_group_cb(lv_obj_t *checkbox, lv_event_t event) { if(event == LV_EVENT_VALUE_CHANGED) { lv_obj_t *checkbox_group = lv_obj_get_parent(lv_obj_get_parent(checkbox)); /* 遍历所有 checkbox 并取消大部分的选中 */ lv_obj_t *child; LV_LL_READ(lv_obj_get_child_ll(checkbox_group), child) { if(lv_obj_is_checkbox(child)) { if(child != checkbox && lv_checkbox_is_checked(child)) { lv_checkbox_set_checked(child, false); } } } /* 后续操作 */ if(lv_checkbox_is_checked(checkbox)) { printf("Checkbox %s is checked\n", lv_checkbox_get_text(checkbox)); } else { printf("Checkbox %s is unchecked\n", lv_checkbox_get_text(checkbox)); } } } /* 创建 checkbox */ lv_obj_t *checkbox_group = lv_cont_create(lv_scr_act(), NULL); lv_cont_set_fit2(checkbox_group, LV_FIT_PARENT, LV_FIT_TIGHT); lv_cont_set_style(checkbox_group, LV_CONT_STYLE_MAIN, &lv_style_transp); lv_obj_t *checkbox1 = lv_checkbox_create(checkbox_group, NULL); lv_checkbox_set_text(checkbox1, "Checkbox 1"); lv_obj_set_event_cb(checkbox1, checkbox_group_cb); lv_obj_t *checkbox2 = lv_checkbox_create(checkbox_group, checkbox1); lv_checkbox_set_text(checkbox2, "Checkbox 2"); lv_obj_set_event_cb(checkbox2, checkbox_group_cb); lv_obj_t *checkbox3 = lv_checkbox_create(checkbox_group, checkbox2); lv_checkbox_set_text(checkbox3, "Checkbox 3"); lv_obj_set_event_cb(checkbox3, checkbox_group_cb); ``` 这样,就可以实现多个 checkbox 之间的互斥了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值