样式

3种设置方式

  • lv_obj_set_style_xxx(obj,value ,selector);

    • obj: 指向要设置样式的 LVGL 对象(如 lv_obj_t *, lv_label_t * 等)的指针。

    • value: 要设置的具体属性值。类型取决于具体的属性(例如颜色是 lv_color_t,宽度是 lv_coord_t,不透明度是 lv_opa_t)。

    • selector: 样式选择器,用于指定该样式应用于对象的哪个部分或状态。

      • 0: 表示默认状态(主要部分)。
      • LV_PART_MAIN: 主体部分。
      • LV_PART_SCROLLBAR: 滚动条部分。
      • LV_PART_INDICATOR: 指示器部分(如进度条、滑块)。
      • LV_STATE_PRESSED: 按下状态。
      • LV_STATE_FOCUSED: 聚焦状态。
      • 可以使用位运算组合,例如 LV_PART_MAIN | LV_STATE_PRESSED
lv_obj_t *base_widget = lv_scr_act();

lv_obj_t *label = lv_label_create(base_widget);
lv_label_set_text(label, "This is a label");
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 0);

lv_obj_set_style_text_color(label, lv_palette_main(LV_PALETTE_RED), 0);
  • lv_obj_add_style(obj, &style, selector)

    • 必须要创建一个lv_style_t变量,并且设置成static
    static lv_style_t label_style;
    
    • 必须初始化,声明变量只分配了内存,但并没有“初始化”其内部逻辑结构
    lv_style_init(&label_style);
    
    • 开始为这个lv_style_t添加样式
    lv_style_set_text_color(&label_style, lv_palette_main(LV_PALETTE_RED));
    
    • 把这个样子附加到控件上,可以多个控件共用一个样式
    lv_obj_add_style(label1,&label_style,0);
    lv_obj_add_style(label2,&label_style,0);
    
  • 主题 / LV_STYLE_DEFAULT,完全不设置,走全局主题或默认值

样式其他函数

lv_style_t * style_def = lv_obj_class_get_style(&lv_label_class, 0);