银杏科技有限公司旗下技术文档发布平台 | |||
技术支持电话 | 0379-69926675-801 | ||
技术支持邮件 | Gingko@vip.163.com | ||
版本 | 日期 | 作者 | 修改内容 |
---|---|---|---|
V1.0 | 2020-12-30 | yang | 初次建立 |
表格通常是由包含文本的行、列和单元格构建的。在LVGL中表格仅存储文本,因此 table 对象占用的空间很少。表格的主要部分称为 LV_TABLE_PART_BG ,它是一个类似于矩形的背景,并使用所有典型的背景样式属性。表格只支持通用事件,并且放置在页面上时可滚动。表格中的单元格不是实际的对象,而是动态绘制的,它有 4 个虚拟部分并且使用所有典型的背景样式属性。
使用函数 lv_table_set_row_cnt(table, row_cnt) 可以设置表格的行数,使用 lv_table_set_col_cnt(table, col_cnt) 可以设置表格的列数。
表格的列宽可以用 lv_table_set_col_width(table, col_id, width) 设置,其中参数 col_id 为列号,第一列的列号为0 。表格对象的总宽度会自动调整为各列宽的总和。
表格的行高是根据单元格样式(字体、填充等)和行数自动计算得出的。
单元格中的文本对齐方式可以使用 lv_table_set_cell_align(table, row, col, LV_LABEL_ALIGN_LEFT/CENTER/RIGHT) 进行单独调整,参数 row、col 为单元格的行号和列号,对齐方式有左对齐、居中对齐、右对齐三种。
函数 lv_table_set_cell_type(table, row, col, type) 用来设置单元格样式,每个单元格都具有样式(1、2、3 或 4),该样式指示要在其上应用哪个部分的样式,例如表头、第一栏、突出显示一个单元格等等:
单元格的值由函数 lv_table_set_cell_value(table, row, col, “Content”) 设置,单元格只能存储文本,因此在将数字显示在表格之前,需要将数字转换为文本。文本由表格保存,因此它也可以是局部变量,而且文本中可以使用换行符来换行,例如 “Value\n60” 。单元格中的文本样式是从单元格或背景继承的。
单元格可以合并,使用 lv_table_set_cell_merge_right(table, col, row, true) 可以将坐标单元格与其右边相邻的单元格合并。若要合并更多的单元格,需要对每个单元格使用这个函数。
默认情况下,文字会自动换行以适合单元格的宽度,并且单元格的高度会自动调整。要禁用自动换行功能并裁剪文本内容可以使用 lv_table_set_cell_crop(table, row, col, true) 。
LV_FONT_DECLARE(kai_16); /* 声明中文字体 */ void lv_gui_run(void){ lvgl2rtt_init("lcd"); /* 初始化lvgl2rtt */ lv_obj_t * table = lv_table_create(lv_scr_act(), NULL); /* 创建表格 */ lv_obj_set_style_local_text_font(table, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &kai_16); /* 设置字体 */ lv_table_set_col_cnt(table, 2); /* 设置列数 */ lv_table_set_row_cnt(table, 5); /* 设置行数 */ lv_table_set_col_width(table, 0, 200); /* 设置第一列宽 */ lv_table_set_col_width(table, 1, 100); /* 设置第二列宽 */ lv_obj_align(table, NULL, LV_ALIGN_CENTER, 0, 0); /* 设置位置 */ lv_table_set_cell_align(table, 0, 0, LV_LABEL_ALIGN_CENTER); /*设置第一行中心对齐*/ lv_table_set_cell_align(table, 0, 1, LV_LABEL_ALIGN_CENTER); lv_table_set_cell_align(table, 1, 1, LV_LABEL_ALIGN_RIGHT); /* 设置价格右对齐 */ lv_table_set_cell_align(table, 2, 1, LV_LABEL_ALIGN_RIGHT); lv_table_set_cell_align(table, 3, 1, LV_LABEL_ALIGN_RIGHT); lv_table_set_cell_align(table, 4, 1, LV_LABEL_ALIGN_RIGHT); lv_table_set_cell_value(table, 0, 0, " 名称 "); /* 设置单元格值 */ lv_table_set_cell_value(table, 1, 0, " 鱼香肉丝盖浇饭 "); lv_table_set_cell_value(table, 2, 0, " 宫保鸡丁盖浇饭 "); lv_table_set_cell_value(table, 3, 0, " 牛肉砂锅面 "); lv_table_set_cell_value(table, 4, 0, " 羊肉刀削面 "); lv_table_set_cell_value(table, 0, 1, " 价格 "); lv_table_set_cell_value(table, 1, 1, "\uF15710"); lv_table_set_cell_value(table, 2, 1, "\uF15710"); lv_table_set_cell_value(table, 3, 1, "\uF15714"); lv_table_set_cell_value(table, 4, 1, "\uF15713"); }