窗口(lv_win)

概述

窗口是类似 容器(lv_cont) 的对象,由带有标题和按钮的标题以及内容区域构建而成。

零件和样式

主要部分是 LV_WIN_PART_BG ,它包含另外两个实际部分:

  • LV_WIN_PART_HEADER 顶部的标题容器,带有标题和控制按钮

  • LV_WIN_PART_CONTENT_SCRL 页眉下方内容的页面可滚动部分。

除此之外, LV_WIN_PART_CONTENT_SCRL 还有一个滚动条,称为 LV_WIN_PART_CONTENT_SCRL 。阅读 页面(lv_page) 的文档以获取有关滚动条的更多详细信息。

所有部分均支持典型的背景属性。标题使用标题部分的Text属性。

控制按钮的高度为:标头高度-标头padding_top-标头padding_bottom。

窗口标题

窗口上有一个标题,可以通过以下方式修改 lv_win_set_title(win, "New title")

控制按钮

可以使用以下命令将控制按钮添加到窗口标题的右侧: lv_win_add_btn_right(win, LV_SYMBOL_CLOSE) ,要在窗口标题的左侧添加按钮,请使用lv_win_add_btn_left(win,LV_SYMBOL_CLOSE)。第二个参数是图像源,因此它可以是符号,指向lv_img_dsc_t变量的指针或文件的路径。

可以使用 lv_win_add_btn_left(win, LV_SYMBOL_CLOSE) 设置按钮的宽度。如果 w == 0 ,则按钮将为正方形。

lv_win_close_event_cb 可以用作关闭窗口的事件回调。

滚动条

可以通过 lv_win_set_scrlbar_mode(win, LV_SCRLBAR_MODE_...) 设置滚动条行为。有关详细信息,请参见 页面(lv_page)

手动滚动和聚焦

要直接滚动窗口,可以使用 lv_win_scroll_hor(win, dist_px)lv_win_scroll_ver(win, dist_px)

要使窗口在其上显示对象,请使用 lv_win_focus(win, child, LV_ANIM_ON/OFF)

滚动和焦点动画的时间可以使用 lv_win_set_anim_time(win, anim_time_ms) 进行调整

布局

要设置内容的布局,请使用 lv_win_set_layout(win, LV_LAYOUT_...) 。有关详细信息,请参见 容器(lv_cont)

事件

仅支持 通用事件

了解有关 事件 的更多内容。

按键处理

窗口可处理以下按键:

  • LV_KEY_RIGHT/LEFT/UP/DOWN 滚动页面

了解有关 按键 的更多内容。

范例

简单的窗口

http://photos.100ask.net/lvgl/04_widgets/34_win/01_lv_ex_win_1.png

简单的窗口

上述效果的示例代码:

 1    #include "../../../lv_examples.h"
 2    #if LV_USE_WIN
 3
 4    void lv_ex_win_1(void)
 5    {
 6            /*Create a window*/
 7            lv_obj_t * win = lv_win_create(lv_scr_act(), NULL);
 8            lv_win_set_title(win, "Window title");                        /*Set the title*/
 9
10
11            /*Add control button to the header*/
12            lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);           /*Add close button and use built-in close action*/
13            lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);
14            lv_win_add_btn(win, LV_SYMBOL_SETTINGS);        /*Add a setup button*/
15
16            /*Add some dummy content*/
17            lv_obj_t * txt = lv_label_create(win, NULL);
18            lv_label_set_text(txt, "This is the content of the window\n\n"
19                                                       "You can add control buttons to\n"
20                                                       "the window header\n\n"
21                                                       "The content area becomes\n"
22                                                       "automatically scrollable is it's \n"
23                                                       "large enough.\n\n"
24                                                       " You can scroll the content\n"
25                                                       "See the scroll bar on the right!");
26    }
27
28    #endif

相关API

TODO