有一些 Widget 属性可以通过lv_obj_add_flag(widget, LV_OBJ_FLAG_...) 和 lv_obj_remove_flag(widget, LV_OBJ_FLAG_...) 来启用或禁用。
LV_OBJ_FLAG_HIDDEN使 Widget 隐藏。(就像它完全不存在一样)LV_OBJ_FLAG_CLICKABLE使 Widget 可以通过输入设备点击LV_OBJ_FLAG_CLICK_FOCUSABLE点击时为 Widget 添加聚焦状态LV_OBJ_FLAG_CHECKABLE当 Widget 被点击时切换选中状态LV_OBJ_FLAG_SCROLLABLE使 Widget 可滚动LV_OBJ_FLAG_SCROLL_ELASTIC允许内部滚动但速度较慢LV_OBJ_FLAG_SCROLL_MOMENTUM当“抛出”Widget 时使其滚动更远LV_OBJ_FLAG_SCROLL_ONE仅允许滚动一个可停靠的子元素LV_OBJ_FLAG_SCROLL_CHAIN_HOR允许将水平滚动传播给父级LV_OBJ_FLAG_SCROLL_CHAIN_VER允许将垂直滚动传播给父级LV_OBJ_FLAG_SCROLL_CHAIN简单包装 (LV_OBJ_FLAG_SCROLL_CHAIN_HOR | LV_OBJ_FLAG_SCROLL_CHAIN_VER)LV_OBJ_FLAG_SCROLL_ON_FOCUS聚焦时自动滚动 Widget 以使其可见LV_OBJ_FLAG_SCROLL_WITH_ARROW允许使用箭头键滚动聚焦的 WidgetLV_OBJ_FLAG_SNAPPABLE如果父级启用了滚动停靠,则可以停靠到此 WidgetLV_OBJ_FLAG_PRESS_LOCK即使按压滑出 Widget 也保持按压状态LV_OBJ_FLAG_EVENT_BUBBLE向父级传播事件LV_OBJ_FLAG_GESTURE_BUBBLE向父级传播手势LV_OBJ_FLAG_ADV_HITTEST允许执行更准确的点击测试。例如,考虑圆角LV_OBJ_FLAG_IGNORE_LAYOUT使 Widget 不受布局定位影响LV_OBJ_FLAG_FLOATING当父级滚动时不滚动该 Widget,并忽略布局LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS启用发送LV_EVENT_DRAW_TASK_ADDED事件LV_OBJ_FLAG_OVERFLOW_VISIBLE不裁剪子元素的内容至父级边界LV_OBJ_FLAG_FLEX_IN_NEW_TRACK在此项目上开始一个新的 flex 轨道LV_OBJ_FLAG_LAYOUT_1自定义标志,由布局自由使用LV_OBJ_FLAG_LAYOUT_2自定义标志,由布局自由使用LV_OBJ_FLAG_WIDGET_1自定义标志,由 widget 自由使用LV_OBJ_FLAG_WIDGET_2自定义标志,由 widget 自由使用LV_OBJ_FLAG_USER_1自定义标志,由用户自由使用LV_OBJ_FLAG_USER_2自定义标志,由用户自由使用LV_OBJ_FLAG_USER_3自定义标志,由用户自由使用LV_OBJ_FLAG_USER_4自定义标志,由用户自由使用
一些例子:
/* 隐藏 Widget */
lv_obj_add_flag(widget, LV_OBJ_FLAG_HIDDEN);
/* 使 Widget 不可点击 */
lv_obj_remove_flag(widget, LV_OBJ_FLAG_CLICKABLE);
LV_EVENT_VALUE_CHANGED当启用了LV_OBJ_FLAG_CHECKABLE标志并且 Widget 被点击(在切换到/从选中状态过渡时)