使用相对对齐 lv_obj_align_to() 解决参数和参数单位相对位置问题,参数数据位数发生变化后,单位会自动跟随变化
lv_obj_t* unit_lab = NULL;
static void timer_cb(lv_timer_t* t)
{
static uint32_t cnt = 0;
lv_label_set_text_fmt(t->user_data, "%d", cnt+=(cnt/10+1));
lv_obj_align_to(unit_lab, t->user_data, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, 0);
}
void test(void)
{
lv_obj_t* num_lab = lv_label_create(lv_scr_act());
lv_obj_align(num_lab, LV_ALIGN_CENTER, 0, 0);
lv_label_set_text_fmt(num_lab, "0");
lv_obj_set_style_text_font(num_lab, &lv_font_montserrat_36, 0);
lv_obj_set_style_text_color(num_lab, lv_color_hex(0xffff), 0);
unit_lab = lv_label_create(lv_scr_act());
lv_obj_align_to(unit_lab, num_lab, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, 0);
lv_label_set_text_fmt(unit_lab, " h");
lv_timer_t* timer = lv_timer_create(timer_cb, 100, num_lab);
lv_timer_enable(timer);
}