滚筒(lv_roller)¶
概述¶
滚筒允许通过滚动简单地从多个选项中选择一个选项。
零件和样式¶
滚筒的主要部件称为 LV_ROLLER_PART_BG
。它是一个矩形,并使用所有典型的背景属性。 Roller标签的样式继承自背景的文本样式属性。
要调整选项之间的间距,请使用text_line_space样式属性。填充样式属性设置了侧面的空间。
中间的选定选项可以用 LV_ROLLER_PART_SELECTED
虚拟零件引用。除了典型的背景属性外,它还使用文本属性来更改所选区域中文本的外观。
用法¶
设定选项¶
这些选项作为带有 lv_roller_set_options(roller, options, LV_ROLLER_MODE_NORMAL/INFINITE)
的字符串传递给Roller。选项应用 \n
分隔。例如: "First\nSecond\nThird"
。
LV_ROLLER_MODE_INFINITE
使滚子呈圆形。
可以使用 lv_roller_set_selected(roller, id, LV_ANIM_ON/OFF)
手动选择选项,其中id是选项的索引。
获取选择的选项¶
使用 lv_roller_get_selected(roller)
获取当前选定的选项,它将返回选定选项的索引。
lv_roller_get_selected_str(roller, buf, buf_size)
将所选选项的名称复制到 buf
。
选项对齐¶
要水平对齐标签,请使用 lv_roller_set_align(roller, LV_LABEL_ALIGN_LEFT/CENTER/RIGHT)
水平对齐标签。
可见行¶
可见行数可以通过 lv_roller_set_visible_row_count(roller, num)
进行调整
动画时间¶
当滚轴滚动且未完全停在某个选项上时,它将自动滚动到最近的有效选项。可以通过 lv_roller_set_anim_time(roller, anim_time)
更改此滚动动画的时间。动画时间为零表示没有动画。
按键处理¶
以下按键由按钮处理:
LV_KEY_RIGHT/DOWN 选择下一个选项
LV_KEY_LEFT/UP 选择上一个选项
LY_KEY_ENTER 应用选定的选项(发送LV_EVENT_VALUE_CHANGED事件)
了解有关 按键 的更多内容。
范例¶
简易滚筒¶
上述效果的示例代码:
1 #include "../../../lv_examples.h"
2 #include <stdio.h>
3 #if LV_USE_ROLLER
4
5 static void event_handler(lv_obj_t * obj, lv_event_t event)
6 {
7 if(event == LV_EVENT_VALUE_CHANGED) {
8 char buf[32];
9 lv_roller_get_selected_str(obj, buf, sizeof(buf));
10 printf("Selected month: %s\n", buf);
11 }
12 }
13
14
15 void lv_ex_roller_1(void)
16 {
17 lv_obj_t *roller1 = lv_roller_create(lv_scr_act(), NULL);
18 lv_roller_set_options(roller1,
19 "January\n"
20 "February\n"
21 "March\n"
22 "April\n"
23 "May\n"
24 "June\n"
25 "July\n"
26 "August\n"
27 "September\n"
28 "October\n"
29 "November\n"
30 "December",
31 LV_ROLLER_MODE_INFINITE);
32
33 lv_roller_set_visible_row_count(roller1, 4);
34 lv_obj_align(roller1, NULL, LV_ALIGN_CENTER, 0, 0);
35 lv_obj_set_event_cb(roller1, event_handler);
36 }
37
38 #endif
相关API¶
TODO