diff --git a/docs/overview/scroll.md b/docs/overview/scroll.md index 90286876e..8387ebba4 100644 --- a/docs/overview/scroll.md +++ b/docs/overview/scroll.md @@ -161,3 +161,9 @@ if(event_code == LV_EVENT_GET_SELF_SIZE) { ``` ## Examples + +```eval_rst + +.. include:: ../../../examples/scroll/index.rst + +``` diff --git a/examples/scroll/index.rst b/examples/scroll/index.rst new file mode 100644 index 000000000..d39ccfd9c --- /dev/null +++ b/examples/scroll/index.rst @@ -0,0 +1,23 @@ +C +^ + +Nested scrolling +"""""""""""""""" + +.. lv_example:: scroll/lv_example_scroll_1 + :language: c + +Snapping +"""""""""""""""" +.. lv_example:: scroll/lv_example_scroll_2 + :language: c + +Floating button +"""""""""""""""" +.. lv_example:: scroll/lv_example_scroll_3 + :language: c + +MicroPython +^^^^^^^^^^^ + +No examples yet. diff --git a/examples/scroll/lv_example_scroll_1.c b/examples/scroll/lv_example_scroll_1.c index dcef1e4ab..4f7e12147 100644 --- a/examples/scroll/lv_example_scroll_1.c +++ b/examples/scroll/lv_example_scroll_1.c @@ -16,30 +16,25 @@ void lv_example_scroll_1(void) child = lv_obj_create(panel); lv_obj_set_pos(child, 0, 0); + lv_obj_set_size(child, 70, 70); label = lv_label_create(child); lv_label_set_text(label, "Zero"); lv_obj_center(label); child = lv_obj_create(panel); - lv_obj_set_pos(child, -40, 100); - label = lv_label_create(child); - lv_label_set_text(label, "Left"); - lv_obj_center(label); + lv_obj_set_pos(child, 160, 80); + lv_obj_set_size(child, 80, 80); - child = lv_obj_create(panel); - lv_obj_set_pos(child, 90, -30); - label = lv_label_create(child); - lv_label_set_text(label, "Top"); - lv_obj_center(label); + lv_obj_t * child2 = lv_btn_create(child); + lv_obj_set_size(child2, 100, 50); - child = lv_obj_create(panel); - lv_obj_set_pos(child, 150, 80); - label = lv_label_create(child); + label = lv_label_create(child2); lv_label_set_text(label, "Right"); lv_obj_center(label); child = lv_obj_create(panel); - lv_obj_set_pos(child, 60, 170); + lv_obj_set_pos(child, 40, 160); + lv_obj_set_size(child, 100, 70); label = lv_label_create(child); lv_label_set_text(label, "Bottom"); lv_obj_center(label); diff --git a/examples/scroll/lv_example_scroll_2.c b/examples/scroll/lv_example_scroll_2.c index c39c15c08..852676c07 100644 --- a/examples/scroll/lv_example_scroll_2.c +++ b/examples/scroll/lv_example_scroll_2.c @@ -20,15 +20,15 @@ static void sw_event_cb(lv_event_t * e) void lv_example_scroll_2(void) { lv_obj_t * panel = lv_obj_create(lv_scr_act()); - lv_obj_set_size(panel, 280, 150); + lv_obj_set_size(panel, 280, 120); lv_obj_set_scroll_snap_x(panel, LV_SCROLL_SNAP_CENTER); lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_ROW); - lv_obj_center(panel); + lv_obj_align(panel, LV_ALIGN_CENTER, 0, 20); uint32_t i; for(i = 0; i < 10; i++) { lv_obj_t * btn = lv_btn_create(panel); - lv_obj_set_size(btn, 150, 100); + lv_obj_set_size(btn, 150, lv_pct(100)); lv_obj_t * label = lv_label_create(btn); if(i == 3) { diff --git a/src/core/lv_obj_scroll.c b/src/core/lv_obj_scroll.c index fb3f505ce..42226ecc1 100644 --- a/src/core/lv_obj_scroll.c +++ b/src/core/lv_obj_scroll.c @@ -384,6 +384,7 @@ bool lv_obj_is_scrolling(const lv_obj_t * obj) void lv_obj_update_snap(lv_obj_t * obj, lv_anim_enable_t anim_en) { + lv_obj_update_layout(obj); lv_point_t p; lv_indev_scroll_get_snap_dist(obj, &p); lv_obj_scroll_by(obj, p.x, p.y, anim_en);