瓦片视图 (lv_tileview)¶
概述¶
瓦片视图是一个容器对象,其元素(称为瓦片)可以以网格形式排列。 用户可以通过滑动在瓦片之间导航。 可以单独禁用瓦片上的任何滑动方向,以防止从一个瓦片移动到另一个瓦片。
如果瓦片视图是屏幕大小,用户界面类似于您可能在智能手表上看到的界面。
用法¶
添加瓦片¶
lv_tileview_add_tile(tileview, row_id, col_id, dir) 在第 row_id 行和第 col_id 列创建一个新瓦片。
dir 可以是 LV_DIR_LEFT/RIGHT/TOP/BOTTOM/HOR/VER/ALL 或 OR 值,用于通过滑动启用移动到给定方向的相邻瓦片。
返回值是一个 lv_obj_t *,可以在其上创建选项卡的内容。
更改瓦片¶
瓦片视图可以使用 lv_obj_set_tile(tileview, tile_obj, LV_ANIM_ON/OFF) 或 lv_obj_set_tile_id(tileview, col_id, row_id, LV_ANIM_ON/OFF) 滚动到某个瓦片。
事件¶
LV_EVENT_VALUE_CHANGED当通过滚动加载新瓦片时发送。可以使用lv_tileview_get_tile_act(tabview)获取当前瓦片。
示例¶
Tileview with content¶
C code
GitHub#include "../../lv_examples.h"
#if LV_USE_TILEVIEW && LV_BUILD_EXAMPLES
/**
* Create a 2x2 tile view and allow scrolling only in an "L" shape.
* Demonstrate scroll chaining with a long list that
* scrolls the tile view when it can't be scrolled further.
*/
void lv_example_tileview_1(void)
{
lv_obj_t * tv = lv_tileview_create(lv_scr_act());
/*Tile1: just a label*/
lv_obj_t * tile1 = lv_tileview_add_tile(tv, 0, 0, LV_DIR_BOTTOM);
lv_obj_t * label = lv_label_create(tile1);
lv_label_set_text(label, "Scroll down");
lv_obj_center(label);
/*Tile2: a button*/
lv_obj_t * tile2 = lv_tileview_add_tile(tv, 0, 1, LV_DIR_TOP | LV_DIR_RIGHT);
lv_obj_t * btn = lv_btn_create(tile2);
label = lv_label_create(btn);
lv_label_set_text(label, "Scroll up or right");
lv_obj_set_size(btn, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_center(btn);
/*Tile3: a list*/
lv_obj_t * tile3 = lv_tileview_add_tile(tv, 1, 1, LV_DIR_LEFT);
lv_obj_t * list = lv_list_create(tile3);
lv_obj_set_size(list, LV_PCT(100), LV_PCT(100));
lv_list_add_btn(list, NULL, "One");
lv_list_add_btn(list, NULL, "Two");
lv_list_add_btn(list, NULL, "Three");
lv_list_add_btn(list, NULL, "Four");
lv_list_add_btn(list, NULL, "Five");
lv_list_add_btn(list, NULL, "Six");
lv_list_add_btn(list, NULL, "Seven");
lv_list_add_btn(list, NULL, "Eight");
lv_list_add_btn(list, NULL, "Nine");
lv_list_add_btn(list, NULL, "Ten");
}
#endif
#
# Create a 2x2 tile view and allow scrolling only in an "L" shape.
# Demonstrate scroll chaining with a long list that
# scrolls the tile view when it can't be scrolled further.
#
tv = lv.tileview(lv.scr_act())
# Tile1: just a label
tile1 = tv.add_tile(0, 0, lv.DIR.BOTTOM)
label = lv.label(tile1)
label.set_text("Scroll down")
label.center()
# Tile2: a button
tile2 = tv.add_tile(0, 1, lv.DIR.TOP | lv.DIR.RIGHT)
btn = lv.btn(tile2)
label = lv.label(btn)
label.set_text("Scroll up or right")
btn.set_size(lv.SIZE.CONTENT, lv.SIZE.CONTENT)
btn.center()
# Tile3: a list
tile3 = tv.add_tile(1, 1, lv.DIR.LEFT)
list = lv.list(tile3)
list.set_size(lv.pct(100), lv.pct(100))
list.add_btn(None, "One")
list.add_btn(None, "Two")
list.add_btn(None, "Three")
list.add_btn(None, "Four")
list.add_btn(None, "Five")
list.add_btn(None, "Six")
list.add_btn(None, "Seven")
list.add_btn(None, "Eight")
list.add_btn(None, "Nine")
list.add_btn(None, "Ten")
API¶
Functions
-
lv_obj_t *
lv_tileview_create(lv_obj_t *parent)¶ Create a Tileview object
- Parameters
parent -- pointer to an object, it will be the parent of the new tileview
- Returns
pointer to the created tileview
-
void
lv_obj_set_tile(lv_obj_t *tv, lv_obj_t *tile_obj, lv_anim_enable_t anim_en)¶
-
void
lv_obj_set_tile_id(lv_obj_t *tv, uint32_t col_id, uint32_t row_id, lv_anim_enable_t anim_en)¶
-
struct
lv_tileview_t¶
-
struct
lv_tileview_tile_t¶