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;
}