容器(lv_cont)¶
概述¶
容器本质上是具有布局和自动调整大小功能的 基本对象 。
零件和样式¶
容器只有一个主要样式称为 LV_CONT_PART_MAIN
,它可以使用所有通常的bacground属性和填充来自动调整布局大小。
用法¶
布局¶
可以在容器上应用布局以自动订购其子代。布局间距来自样式的 填充(pad)
属性。可能的布局选项:
LV_LAYOUT_OFF - 不要对齐子代。
LV_LAYOUT_CENTER - 将子项与列中的中心对齐,并
padd_inner
在它们之间保持间距。LV_LAYOUT_COLUMN_LEFT - 在左对齐的列中对齐子级。请
padd_left
在左边,空间pad_top
空间的顶部和pad_inner
孩子之间的空间。LV_LAYOUT_COLUMN_MID - 在中心列中对齐子代。
padd_top
在顶部和pad_inner
孩子之间保持空间。LV_LAYOUT_COLUMN_RIGHT - 在右对齐的列中对齐子代。保持
padd_right
右边的pad_top
空间,顶部的 ``pad_inner空间和孩子之间的空间。LV_LAYOUT_ROW_TOP - 在顶部对齐的行中对齐子级。请pad_left在左边,空间pad_top空间的顶部和pad_inner`` 孩子之间的空间。
LV_LAYOUT_ROW_MID - 在居中的行中对齐子级。
pad_left
在左边和pad_inner
孩子之间保持空间。LV_LAYOUT_ROW_BOTTOM - 在底部对齐的行中对齐子级。请
pad_left
在左边,空间pad_bottom
空间的底部和pad_inner
孩子之间的空间。LV_LAYOUT_PRETTY_TOP - 将作为连续多的对象可能(至少
pad_inner
空间和pad_left/right
空间两侧)。在孩子之间的每一行中平均分配空间。如果这是连续不同身高的孩子,请对齐其上边缘。LV_LAYOUT_PRETTY_MID - 与
LV_LAYOUT_PRETTY_MID
相同,但是如果此处的孩子连续排成不同的高度,则对齐他们的中线。LV_LAYOUT_PRETTY_BOTTOM - 与 ··LV_LAYOUT_PRETTY_BOTTOM·· 相同, ··但是如果这是连续高度不同的子项,请对齐其底线。
LV_LAYOUT_GRID - 类似于
LV_LAYOUT_PRETTY
但不能平均划分水平空间,只是让它们之间的pad_left/right
边缘和pad_inner
空间分开。
自动调整¶
容器具有自动适应功能,可以根据其子代和/或父代自动更改容器的大小。存在以下选项:
LV_FIT_NONE - 不要自动更改大小。
LV_FIT_TIGHT - 将容器收缩包装在其所有子容器周围,同时
pad_top/bottom/left/right
在边缘保留空间。LV_FIT_PARENT - 将大小设置为父项的大小减去
pad_top/bottom/left/right
(来自父项的样式)空间。LV_FIT_MAX - 使用
LV_FIT_PARENT
而不是父小,LV_FIT_TIGHT
时大。它将确保该容器至少是其父容器的大小。
要为所有方向设置自动适合模式,请使用。要在水平和垂直方向上使用不同的自动拟合,请使用。要在所有四个方向上使用不同的自动拟合,请使用。lv_cont_set_fit(cont, LV_FIT_…)lv_cont_set_fit2(cont, hor_fit_type, ver_fit_type)lv_cont_set_fit4(cont, left_fit_type, right_fit_type, top_fit_type, bottom_fit_type)
范例¶
容器示例¶
上述效果的示例代码:
1 #include "../../../lv_examples.h"
2 #if LV_USE_CONT
3
4 void lv_ex_cont_1(void)
5 {
6 lv_obj_t * cont;
7
8 cont = lv_cont_create(lv_scr_act(), NULL);
9 lv_obj_set_auto_realign(cont, true); /*Auto realign when the size changes*/
10 lv_obj_align_origo(cont, NULL, LV_ALIGN_CENTER, 0, 0); /*This parametrs will be sued when realigned*/
11 lv_cont_set_fit(cont, LV_FIT_TIGHT);
12 lv_cont_set_layout(cont, LV_LAYOUT_COLUMN_MID);
13
14 lv_obj_t * label;
15 label = lv_label_create(cont, NULL);
16 lv_label_set_text(label, "Short text");
17
18 /*Refresh and pause here for a while to see how `fit` works*/
19 uint32_t t;
20 lv_refr_now(NULL);
21 t = lv_tick_get();
22 while(lv_tick_elaps(t) < 500);
23
24 label = lv_label_create(cont, NULL);
25 lv_label_set_text(label, "It is a long text");
26
27 /*Wait here too*/
28 lv_refr_now(NULL);
29 t = lv_tick_get();
30 while(lv_tick_elaps(t) < 500);
31
32 label = lv_label_create(cont, NULL);
33 lv_label_set_text(label, "Here is an even longer text");
34 }
35
36 #endif
相关API¶
TODO