checkbox的相关API - lightdong/LVGL_Study GitHub Wiki
/测试复选框相关的函数/
/part : main indicator/
/创建一个复选框/
lv_obj_t *checkbox1 = lv_checkbox_create(lv_scr_act());
/改变复选框文本的内容/
lv_checkbox_set_text(checkbox1,"my_checkbox");
/设置复选框的样式/
lv_obj_set_style_bg_color(checkbox1,lv_color_hex(0x0000ff),LV_STATE_DEFAULT|LV_PART_MAIN);
lv_obj_set_style_bg_opa(checkbox1,LV_OPA_50,LV_STATE_DEFAULT|LV_PART_MAIN);
lv_obj_set_size(checkbox1,140,40);//只能增大主体的宽度,并不会增加指示器的大小
lv_obj_set_style_pad_all(checkbox1,10,LV_STATE_DEFAULT|LV_PART_INDICATOR);//可以通过增大指示器的填充来改变指示器的大小
lv_obj_set_style_pad_column(checkbox1,10,LV_STATE_DEFAULT|LV_PART_MAIN);//设置对象内元素的间距,这里可以作为调整文本到指示器的距离用
lv_obj_set_style_radius(checkbox1,LV_RADIUS_CIRCLE,LV_STATE_DEFAULT|LV_PART_INDICATOR);//方形指示器改为圆形指示器
lv_obj_set_style_bg_img_src(checkbox1,NULL,LV_STATE_CHECKED|LV_PART_INDICATOR);//不再去添加一个√
lv_obj_add_state(checkbox1,LV_STATE_CHECKED);//手动添加的话可以进入到这种选中的状态中
lv_obj_clear_state(checkbox1,LV_STATE_CHECKED);
/创建三个复选框,并设置样式/
lv_obj_set_style_radius(checkbox2,LV_RADIUS_CIRCLE,LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_bg_img_src(checkbox3,NULL,LV_STATE_CHECKED|LV_PART_INDICATOR);
lv_obj_set_style_border_color(checkbox2,lv_color_hex(0xff00ff),LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_border_color(checkbox3,lv_color_hex(0x00ffff),LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_border_color(checkbox4,lv_color_hex(0x0000ff),LV_STATE_DEFAULT|LV_PART_INDICATOR);
/一种形式的复选框/
lv_obj_set_style_radius(checkbox5,LV_RADIUS_CIRCLE,LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_bg_img_src(checkbox5,NULL,LV_STATE_CHECKED|LV_PART_INDICATOR);
lv_obj_set_style_outline_width(checkbox5,2,LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_outline_pad(checkbox5,4,LV_STATE_DEFAULT|LV_PART_INDICATOR);//框廓至边框再带一层泡沫
lv_obj_set_style_outline_color(checkbox5,lv_color_hex(0x58C7A0),LV_STATE_DEFAULT|LV_PART_INDICATOR);
lv_obj_set_style_border_width(checkbox5,0,LV_STATE_DEFAULT|LV_PART_INDICATOR);
/如何同时只能勾选一个复选框,且只能调一个回调函数/
old_checkbox = checkbox2;//这是一个全局变量
static void checkbox_cb(lv_event_t *e){
printf("test\n");
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t *target = lv_event_get_target(e);
if(code != LV_EVENT_CLICKED)
return;
/*一但选中复选框后,就不再调用这个回调函数*/
lv_obj_clear_flag(old_checkbox,LV_OBJ_FLAG_CLICKABLE);
lv_obj_clear_flag(target,LV_OBJ_FLAG_CLICKABLE);
if(target != old_checkbox)
lv_obj_add_flag(old_checkbox,LV_OBJ_FLAG_CLICKABLE);
/*只有一个复选框可以被选中*/
lv_obj_clear_state(old_checkbox,LV_STATE_CHECKED);
lv_obj_add_state(target,LV_STATE_CHECKED);
old_checkbox = target;
}