lvgl 小部件之样式属性篇

简介

样式设置是LVGL中,要做一个优美的UI界面不可缺少的必然要素。

lvgl样式属性说明

lvgl样式之 大小、位置和填充样式属性设置

使用代码举例:

static lv_style_t style;
lv_style_init(&style);
//设置样式圆角半径
lv_style_set_radius(&style, 5);

//设置大小样式
lv_style_set_width(&style, 150);
lv_style_set_height(&style, LV_SIZE_CONTENT);

//设置填充样式
lv_style_set_pad_ver(&style, 20);
lv_style_set_pad_left(&style, 5);

//设置位置样式
lv_style_set_x(&style, lv_pct(50));
lv_style_set_y(&style, 80);

/*创建一个对象使用新样式*/
lv_obj_t * obj = lv_obj_create(lv_scr_act());
lv_obj_add_style(obj, &style, 0);

lv_obj_t * label = lv_label_create(obj);
lv_label_set_text(label, "Hello");

使用效果如下:
在这里插入图片描述

lvgl样式之 背景色、边框色、外边距属性设置

举例代码:

//创建一个容器
static const lv_style_prop_t props[] = {LV_STYLE_BG_COLOR, LV_STYLE_BORDER_COLOR, LV_STYLE_BORDER_WIDTH, 0};

/* 一个默认样式
 * 延时100ms启动,延迟200ms后结束*/
static lv_style_transition_dsc_t trans_def;
lv_style_transition_dsc_init(&trans_def, props, lv_anim_path_linear, 100, 200, NULL);

/* 按下状态下的一个特殊样式
 * 延迟500ms启动, 但不延迟结束*/
static lv_style_transition_dsc_t trans_pr;
lv_style_transition_dsc_init(&trans_pr, props, lv_anim_path_linear, 500, 0, NULL);

static lv_style_t style_def;
//创建样式
lv_style_init(&style_def);
//将预定默认状态添加到样式style_def中
lv_style_set_transition(&style_def, &trans_def);

static lv_style_t style_pr;
//创建样式
lv_style_init(&style_pr);
//样式背景颜色:红色
lv_style_set_bg_color(&style_pr, lv_palette_main(LV_PALETTE_RED));
//样式外边距:6pix
lv_style_set_border_width(&style_pr, 6);
//样式外边框颜色:蓝色
lv_style_set_border_color(&style_pr, lv_palette_darken(LV_PALETTE_BLUE, 3));
//将预定按下样式添加到style_pr中
lv_style_set_transition(&style_pr, &trans_pr);

/*创建一个对象,用于使样式生效*/
#if 0
//常见样式
	LV_STATE_DEFAULT     =  0x0000,
	LV_STATE_CHECKED     =  0x0001,
	LV_STATE_FOCUSED     =  0x0002,
	LV_STATE_FOCUS_KEY   =  0x0004,
	LV_STATE_EDITED      =  0x0008,
	LV_STATE_HOVERED     =  0x0010,
	LV_STATE_PRESSED     =  0x0020,
	LV_STATE_SCROLLED    =  0x0040,
	LV_STATE_DISABLED    =  0x0080,
	LV_STATE_USER_1      =  0x1000,
	LV_STATE_USER_2      =  0x2000,
	LV_STATE_USER_3      =  0x4000,
	LV_STATE_USER_4      =  0x8000,
#endif
//创建对象
lv_obj_t * obj = lv_obj_create(lv_scr_act());
//将style_def设置为默认样式
lv_obj_add_style(obj, &style_def, 0);
//将style_pr设置为按压样式
lv_obj_add_style(obj, &style_pr, LV_STATE_PRESSED);

lv_obj_center(obj);

效果如下:
在这里插入图片描述
点击后,效果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/72dd6a2b07c5475e9e98294f195c0e36.png

lvgl样式之 文本样式属性设置

使用代码举例:

//创建样式
static lv_style_t style;
//初始化样式
lv_style_init(&style);

//设置背景圆角半径为: 5
lv_style_set_radius(&style, 5);
//设置背景透明度
lv_style_set_bg_opa(&style, LV_OPA_COVER);
//设置背景颜色
lv_style_set_bg_color(&style, lv_palette_lighten(LV_PALETTE_GREY, 2));
//设置外边距为: 2
lv_style_set_b:order_width(&style, 2);
//设置外边框颜色为蓝色
lv_style_set_border_color(&style, lv_palette_main(LV_PALETTE_BLUE));
//设置填充
lv_style_set_pad_all(&style, 10);

//设置文本样式之颜色:蓝色
lv_style_set_text_color(&style, lv_palette_main(LV_PALETTE_BLUE));
//设置文本样式之文字之间间距: 5
lv_style_set_text_letter_space(&style, 5);
//设置文本样式之行间距: 20
lv_style_set_text_line_space(&style, 20);
//设置文本样式下划线
lv_style_set_text_decor(&style, LV_TEXT_DECOR_UNDERLINE);

/*Create an object with the new style*/
lv_obj_t * obj = lv_label_create(lv_scr_act());
lv_obj_add_style(obj, &style, 0);
lv_label_set_text(obj, "Text of\n"
                        "a label");

lv_obj_center(obj);

使用效果如下:
在这里插入图片描述

LVGL之多样式的使用

使用示例:

// 创建一个属性style_base,并设置属性
static lv_style_t style_base;
lv_style_init(&style_base);
lv_style_set_bg_color(&style_base, lv_palette_main(LV_PALETTE_LIGHT_BLUE));
lv_style_set_border_color(&style_base, lv_palette_darken(LV_PALETTE_LIGHT_BLUE, 3));
lv_style_set_border_width(&style_base, 2);
lv_style_set_radius(&style_base, 10);
lv_style_set_shadow_width(&style_base, 10);
lv_style_set_shadow_ofs_y(&style_base, 5);
lv_style_set_shadow_opa(&style_base, LV_OPA_50);
lv_style_set_text_color(&style_base, lv_color_white());
lv_style_set_width(&style_base, 100);
lv_style_set_height(&style_base, LV_SIZE_CONTENT);

/*只设置与基础样式属性style_base不同的属性*/
static lv_style_t style_warning;
lv_style_init(&style_warning);
lv_style_set_bg_color(&style_warning, lv_palette_main(LV_PALETTE_YELLOW));
lv_style_set_border_color(&style_warning, lv_palette_darken(LV_PALETTE_YELLOW, 3));
lv_style_set_text_color(&style_warning, lv_palette_darken(LV_PALETTE_YELLOW, 4));

// 只使用基本样式创建一个对象
lv_obj_t * obj_base = lv_obj_create(lv_scr_act());
lv_obj_add_style(obj_base, &style_base, 0);
lv_obj_align(obj_base, LV_ALIGN_LEFT_MID, 20, 0);

//创建新标签,将标签Base加入新建基本样式对象中obj_base
lv_obj_t * label = lv_label_create(obj_base);
lv_label_set_text(label, "Base");
lv_obj_center(label);

// 创建另一个对象,同时使用基本样式style_base和另一个新增的样式style_warning
lv_obj_t * obj_warning = lv_obj_create(lv_scr_act());
lv_obj_add_style(obj_warning, &style_base, 0);
lv_obj_add_style(obj_warning, &style_warning, 0);
lv_obj_align(obj_warning, LV_ALIGN_RIGHT_MID, -20, 0);

//创建新标签,将标签Warning加入新建基本样式对象中obj_warning
label = lv_label_create(obj_warning);
lv_label_set_text(label, "Warning");
lv_obj_center(label);

使用效果如下:
在这里插入图片描述

补充中

。。。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LVGL的table部件是用来创建和管理表格的部件。可以通过以下步骤来使用和配置LVGL的table部件: 1. 创建表格部件:使用`lv_table_create(parent)`函数创建一个表格部件,并指定其父对象。 2. 设置行数和列数:使用`lv_table_set_row_cnt(table, count)`和`lv_table_set_col_cnt(table, count)`函数设置表格的行数和列数。可以使用`lv_table_set_col_width(table, col, width)`函数设置每列的宽度。 3. 设置单元格内容:使用`lv_table_set_cell_value(table, row, col, content)`函数设置指定行和列的单元格的内容。可以使用`lv_table_set_cell_value_fmt(table, row, col, format, ...)`函数以格式化的方式设置单元格的内容。 总结: LVGL的table部件可以用来创建和管理表格,可以设置行数、列数、单元格内容等。它可以轻松地创建和展示表格数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [嵌入式GUI LVGL『Table表格控件』介绍](https://blog.csdn.net/XiaoXiaoPengBo/article/details/114077640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [第四节 LVGL部件使用](https://blog.csdn.net/picassocao/article/details/129102598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值