一、概述
Table(表格)是由包含文本的行、列和单元格构建的。
表格对象非常轻量级,因为仅存储文本。没有为各个单元格创建真实的对象,因为它们只是即时绘制出来的。
表格对象默认已经在默认组中(如果已设置)。可以在导航模式下选中整张表,之后进入编辑模式可以在各个单元格之间进行移动选择。
LV_PART_MAIN
表格的背景使用了所有典型的背景样式属性。LV_PART_ITEMS
表格的单元格也使用所有典型的背景样式属性和文本属性。
二、表格
1、设置单元格的值
在默认的情况下,用户创建出表格部件,该表格中并没有任何的内容,如果我们想在某个单元格中添加文本,则可调用 lv_table_set_cell_value
函数。
lv_obj_t *table = lv_table_create(lv_scr_act());
/*Fill the first column*/
lv_table_set_cell_value(table, 0, 0, "Name");
lv_table_set_cell_value(table, 1, 0, "Jorden");
lv_table_set_cell_value(table, 2, 0, "Jame");
lv_table_set_cell_value(table, 3, 0, "Kobe");
/*Fill the second column*/
lv_table_set_cell_value(table, 0, 1, "Age");
lv_table_set_cell_value(table, 1, 1, "52");
lv_table_set_cell_value(table, 2, 1, "36");
lv_table_set_cell_value(table, 3, 1, "40");
lv_obj_center(table);
2、行和列的设置
在默认的情况下,用户创建出表格部件,该部件只拥有一个单元格,如果我们需要设置单元格的行数和列数,可调用 lv_table_set_row_cnt
和 lv_table_set_col_cnt
函数。
lv_table_set_row_cnt(table,2); /*设置行数 */
lv_table_set_col_cnt(table,2); /*设置列数 */
行和列的编号都是从 0 开始的
3、宽度和高度的设置
在表格部件中,用户可通过 lv_table_set_col_width
函数设置某一列的宽度,而单元格的高度则根据单元格样式(字体、填充等)和行数自动计算出来的。
lv_table_set_col_width(table, 0, 500);
4、合并单元格
合并单元格是指将指定的连续单元区域合并为 1 个单元格,示意图如下所示:
由上图可知:如果 a 和 b 的单元格发生合并,合并之后的单元格归 a 单元格所有,而 b 单元格将被删除。注意:在表格部件中,某一个单元格只能和右边的单元格进行合并,不能垂直合并单元格。用户需要合并单元格,可调用 lv_table_add_cell_ctrl
函数。
lv_table_add_cell_ctrl(table, 0, 0, LV_TABLE_CELL_CTRL_MERGE_RIGHT);
5、滚动
如果标签的宽度或高度设置为 LV_SIZE_CONTENT
则该尺寸将用于在相应方向上显示整个表格。 例如。lv_obj_set_size(table, LV_SIZE_CONTENT, LV_SIZE_CONTENT)
自动设置表格大小以显示所有列和行。
如果宽度或高度设置为小于“固有”大小的数字,则表格变为可滚动的。
6、事件
LV_EVENT_VALUE_CHANGED
:用选择(通过触摸或按键点击)单元格时发送的事件。
7、API 函数
函数 | 描述 |
---|---|
lv_table_create() | 创建表格对象 |
lv_table_set_cell_value() | 设置单元格的值 |
lv_table_set_cell_value_fmt() | 设置单元格的值(格式化输入) |
lv_table_set_row_cnt() | 设置行数 |
lv_table_set_col_cnt() | 设置列数 |
lv_table_set_col_width() | 设置列的宽度 |
lv_table_add_cell_ctrl() | 向单元格添加控制位 |
lv_table_clear_cell_ctrl() | 清除单元格的控制位 |
lv_table_get_cell_value() | 获取单元格的值 |
lv_table_get_row_cnt() | 获取行数 |
lv_table_get_col_cnt() | 获取列数 |
lv_table_get_col_width() | 获取列的宽度 |
lv_table_has_cell_ctrl() | 判断单元格是否具有控制位 |
lv_table_get_selected_cell() | 获得选定的单元格 |