窗口(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
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    #include "../../../lv_examples.h"
    #if LV_USE_WIN

    void lv_ex_win_1(void)
    {
            /*Create a window*/
            lv_obj_t * win = lv_win_create(lv_scr_act(), NULL);
            lv_win_set_title(win, "Window title");                        /*Set the title*/


            /*Add control button to the header*/
            lv_obj_t * close_btn = lv_win_add_btn(win, LV_SYMBOL_CLOSE);           /*Add close button and use built-in close action*/
            lv_obj_set_event_cb(close_btn, lv_win_close_event_cb);
            lv_win_add_btn(win, LV_SYMBOL_SETTINGS);        /*Add a setup button*/

            /*Add some dummy content*/
            lv_obj_t * txt = lv_label_create(win, NULL);
            lv_label_set_text(txt, "This is the content of the window\n\n"
                                                       "You can add control buttons to\n"
                                                       "the window header\n\n"
                                                       "The content area becomes\n"
                                                       "automatically scrollable is it's \n"
                                                       "large enough.\n\n"
                                                       " You can scroll the content\n"
                                                       "See the scroll bar on the right!");
    }

    #endif

相关API

TODO