lv_spangroup_create
用于创建富文本容器(Spangroup)的函数,用于管理多段不同样式的文本- lv_obj_t* lv_spangroup_create(lv_obj_t* parent);
- //parent:父对象指针
- //ret:创建的 Spangroup 对象指针
复制代码 lv_spangroup_new_span
用于向 Spangroup 对象添加新文本片段(Span)的函数- lv_span_t* lv_spangroup_new_span(lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:新创建的 Span 描述符指针(lv_span_t*),用于后续文本和样式设置
复制代码 lv_spangroup_del_span
用于从 Spangroup 对象中删除指定文本片段(Span)的函数- void lv_spangroup_del_span(lv_obj_t* spangroup, lv_span_t* span);
- //spangroup:Spangroup 对象指针
- //span:要删除的 Span 描述符指针
复制代码 lv_span_set_text
用于动态设置 Span 对象文本内容的函数,支持内存自动分配和样式混合- void lv_span_set_text(lv_span_t* span, const char* text);
- //span:通过 lv_spangroup_new_span() 创建的 Span 描述符指针
- //text:需设置的文本字符串(以 \0 结尾)
复制代码 lv_span_set_text_static
用于为 Span 对象设置静态文本的函数,与动态文本函数 lv_span_set_text() 不同,它直接引用外部文本内存而不进行复制,适合长期存在的常量字符串- void lv_span_set_text_static(lv_span_t* span, const char* text);
- //span:通过 lv_spangroup_new_span() 创建的 Span 描述符指针
- //text:需设置的静态文本字符串(需保证生命周期与 Span 一致)
复制代码 lv_spangroup_set_align
用于设置 Spangroup 对象内文本对齐方式的函数,适用于富文本容器的布局控制- void lv_spangroup_set_align(lv_obj_t* spangroup, lv_text_align_t align);
- //spangroup:Spangroup 对象指针(由 lv_spangroup_create() 创建)
- /*
- align:对齐模式,支持以下枚举值:
- LV_TEXT_ALIGN_LEFT:左对齐(默认)。
- LV_TEXT_ALIGN_CENTER:居中对齐。
- LV_TEXT_ALIGN_RIGHT:右对齐。
- LV_TEXT_ALIGN_AUTO:根据文本方向自动选择对齐方式(如阿拉伯语从右向左显示)
- */
复制代码 lv_spangroup_set_overflow
用于设置 Spangroup 对象文本溢出处理方式的函数,支持裁剪或显示省略号等行为- void lv_spangroup_set_overflow(lv_obj_t* spangroup, lv_span_overflow_t overflow);
- //spangroup:Spangroup 对象指针(由 lv_spangroup_create() 创建)
- //overflow:溢出模式,可选值:
- //LV_SPAN_OVERFLOW_CLIP:裁剪溢出文本(默认)。
- //LV_SPAN_OVERFLOW_ELLIPSIS:溢出时显示省略号(...)
复制代码 lv_spangroup_set_indent
用于设置 Spangroup 对象首行文本缩进的函数,支持像素单位和百分比单位- void lv_spangroup_set_indent(lv_obj_t* spangroup, int32_t indent);
- //spangroup:Spangroup 对象指针(由 lv_spangroup_create() 创建)
- //indent:缩进值:
- //像素单位:直接指定像素值(如 20 表示缩进20像素)。
- //百分比单位:仅在 LV_SPAN_MODE_FIXED 和 LV_SPAN_MODE_BREAK 模式下生效,需传入 LV_PCT(x) 宏(如 LV_PCT(10) 表示缩进容器宽度的10%)
复制代码 lv_spangroup_set_mode
用于设置 Spangroup 对象文本布局模式的核心函数,控制文本的换行、容器尺寸调整等行为- void lv_spangroup_set_mode(lv_obj_t* spangroup, lv_span_mode_t mode);
- //spangroup:Spangroup 对象指针
- //mode:布局模式,支持以下枚举值:
- //LV_SPAN_MODE_FIXED:固定容器尺寸,文本超出部分被裁剪或显示省略号(需配合 lv_spangroup_set_overflow() 使用)。
- //LV_SPAN_MODE_EXPAND:单行模式,容器宽度自动扩展以适应文本长度,高度不变。
- //LV_SPAN_MODE_BREAK:自动换行模式,保持容器宽度不变,文本超出行宽时自动换行并扩展高度
复制代码 lv_spangroup_set_lines
用于设置 Spangroup 对象在BREAK 模式下最大显示行数的函数,支持限制文本行数或自动扩展高度- void lv_spangroup_set_lines(lv_obj_t* spangroup, int32_t lines);
- //spangroup:Spangroup 对象指针
- //lines:最大行数:
- 正值(如 5):限制显示指定行数,超出行数部分隐藏。
- 负值(如 -1):不限制行数,文本自动换行并扩展容器高度
复制代码 lv_spangroup_get_child
用于获取 Spangroup 对象内指定索引的子 Span 描述符的函数,适用于动态管理富文本中的不同文本片段- lv_span_t* lv_spangroup_get_child(const lv_obj_t* spangroup, int32_t id);
- //spangroup:Spangroup 对象指针
- //id:子 Span 的索引:
- //正数:从 0 开始的正向索引(如 0 表示第一个 Span)。
- //负数:从 -1 开始的逆向索引(如 -1 表示最后一个 Span,-2 表示倒数第二个)
- //ret:返回指向 lv_span_t 描述符的指针,若索引无效则返回 NULL
复制代码 lv_spangroup_get_child_cnt
用于获取 Spangroup 对象内子 Span 数量的函数,适用于动态管理富文本中的文本片段- uint32_t lv_spangroup_get_child_cnt(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回 Spangroup 中包含的子 Span 数量(uint32_t 类型),若对象无效则返回 0
复制代码 lv_spangroup_get_align
用于获取 Spangroup 对象当前文本对齐方式的函数- lv_text_align_t lv_spangroup_get_align(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回 lv_text_align_t 枚举值,表示当前对齐方式:
- //LV_TEXT_ALIGN_LEFT:左对齐
- //LV_TEXT_ALIGN_CENTER:居中对齐
- //LV_TEXT_ALIGN_RIGHT:右对齐
- //LV_TEXT_ALIGN_AUTO:自动对齐(根据语言方向调整)
复制代码 lv_spangroup_get_overflow
用于获取 Spangroup 对象当前文本溢出处理模式的函数- lv_span_overflow_t lv_spangroup_get_overflow(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回 lv_span_overflow_t 枚举值,表示当前溢出处理模式:
- //LV_SPAN_OVERFLOW_CLIP:裁剪溢出文本(默认值)。
- //LV_SPAN_OVERFLOW_ELLIPSIS:显示省略号(...)表示溢出。
复制代码 lv_spangroup_get_indent
用于获取 Spangroup 对象首行缩进值的函数- int32_t lv_spangroup_get_indent(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回首行缩进值(int32_t 类型),单位为像素或百分比
复制代码 lv_spangroup_get_mode
用于获取 Spangroup 对象当前布局模式的函数- lv_span_mode_t lv_spangroup_get_mode(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //返回 lv_span_mode_t 枚举值,表示当前布局模式:
- //LV_SPAN_MODE_FIXED:固定对象尺寸,文本超出部分被裁剪或显示省略号 。
- //LV_SPAN_MODE_EXPAND:自动扩展宽度以适应文本(单行显示)。
- //LV_SPAN_MODE_BREAK:固定宽度,自动换行并扩展高度
复制代码 lv_spangroup_get_lines
用于获取 Spangroup 对象当前设置的最大显示行数的函数- int16_t lv_spangroup_get_lines(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //返回 int16_t 类型的值:
- //正数:表示当前设置的最大行数限制(仅在 LV_SPAN_MODE_BREAK 模式下生效)。
- //负数(如 -1):表示无行数限制(默认值)
复制代码 lv_spangroup_get_max_line_h
用于获取 Spangroup 对象当前文本行的最大高度的函数- int32_t lv_spangroup_get_max_line_h(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回 int32_t 类型的值,表示当前文本行的最大高度(单位为像素)。若 Spangroup 无文本或未设置样式,可能返回 0。
复制代码 lv_spangroup_get_expand_width
用于获取 Spangroup 对象在 LV_SPAN_MODE_EXPAND 模式下的文本内容总宽度的函数- int32_t lv_spangroup_get_expand_width(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针(需通过 lv_spangroup_create() 创建)
- //ret:返回 int32_t 类型的值,表示文本内容在无换行情况下的总宽度(单位为像素)。若 Spangroup 无文本或未设置样式,可能返回 0
复制代码 lv_spangroup_get_expand_height
用于获取 Spangroup 对象在自动扩展模式下的文本内容总高度的函数- int32_t lv_spangroup_get_expand_height(const lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
- //ret:返回 int32_t 类型的值,表示文本内容在无高度限制时的总高度(单位为像素)。若 Spangroup 无文本或未设置样式,可能返回 0
复制代码 lv_spangroup_refr_mode
用于刷新 Spangroup 对象布局模式的函数,通常在修改文本内容或样式后调用以更新显示- void lv_spangroup_refr_mode(lv_obj_t* spangroup);
- //spangroup:Spangroup 对象指针
复制代码- void lv_example_span_1(void)
- {
- // 定义一个静态样式变量
- static lv_style_t style;
- lv_style_init(&style); // 初始化样式
- lv_style_set_border_width(&style, 1); // 设置边框宽度为 1 像素
- lv_style_set_border_color(&style, lv_palette_main(LV_PALETTE_ORANGE)); // 设置边框颜色为橙色
- lv_style_set_pad_all(&style, 2); // 设置所有方向的填充为 2 像素
- // 创建一个文本段组(spangroup)对象,并将其添加到当前屏幕
- lv_obj_t * spans = lv_spangroup_create(lv_scr_act());
- lv_obj_set_width(spans, 300); // 设置文本段组的宽度为 300 像素
- lv_obj_set_height(spans, 300); // 设置文本段组的高度为 300 像素
- lv_obj_center(spans); // 将文本段组居中
- lv_obj_add_style(spans, &style, 0); // 将样式应用到文本段组
- // 设置文本段组的对齐方式为左对齐
- lv_spangroup_set_align(spans, LV_TEXT_ALIGN_LEFT);
- // 设置文本段组的溢出行为为裁剪
- lv_spangroup_set_overflow(spans, LV_SPAN_OVERFLOW_CLIP);
- // 设置文本段组的缩进为 20 像素
- lv_spangroup_set_indent(spans, 20);
- // 设置文本段组的模式为自动换行
- lv_spangroup_set_mode(spans, LV_SPAN_MODE_BREAK);
- // 创建一个文本段,并设置其文本内容
- lv_span_t * span = lv_spangroup_new_span(spans);
- lv_span_set_text(span, "China is a beautiful country.");
- // 设置该文本段的样式
- lv_style_set_text_color(&span->style, lv_palette_main(LV_PALETTE_RED)); // 设置文本颜色为红色
- lv_style_set_text_decor(&span->style, LV_TEXT_DECOR_UNDERLINE); // 设置文本装饰为下划线
- lv_style_set_text_opa(&span->style, LV_OPA_50); // 设置文本的透明度为 50%
- // 创建另一个文本段,并设置其文本内容
- span = lv_spangroup_new_span(spans);
- lv_span_set_text_static(span, "good good study, day day up.");
- // 设置该文本段的样式
- #if LV_FONT_MONTSERRAT_24
- lv_style_set_text_font(&span->style, &lv_font_montserrat_24); // 设置文本字体为 Montserrat 24
- #endif
- lv_style_set_text_color(&span->style, lv_palette_main(LV_PALETTE_GREEN)); // 设置文本颜色为绿色
- // 创建第三个文本段,并设置其文本内容
- span = lv_spangroup_new_span(spans);
- lv_span_set_text_static(span, "LVGL is an open-source graphics library.");
- // 设置该文本段的样式
- lv_style_set_text_color(&span->style, lv_palette_main(LV_PALETTE_BLUE)); // 设置文本颜色为蓝色
- // 创建第四个文本段,并设置其文本内容
- span = lv_spangroup_new_span(spans);
- lv_span_set_text_static(span, "the boy no name.");
- // 设置该文本段的样式
- lv_style_set_text_color(&span->style, lv_palette_main(LV_PALETTE_GREEN)); // 设置文本颜色为绿色
- #if LV_FONT_MONTSERRAT_20
- lv_style_set_text_font(&span->style, &lv_font_montserrat_20); // 设置文本字体为 Montserrat 20
- #endif
- lv_style_set_text_decor(&span->style, LV_TEXT_DECOR_UNDERLINE); // 设置文本装饰为下划线
- // 创建第五个文本段,并设置其文本内容
- span = lv_spangroup_new_span(spans);
- lv_span_set_text(span, "I have a dream that hope to come true.");
- // 设置该文本段的样式
- lv_style_set_text_decor(&span->style, LV_TEXT_DECOR_STRIKETHROUGH); // 设置文本装饰为删除线
- // 刷新文本段组的模式
- lv_spangroup_refr_mode(spans);
- }
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |