lv_example_scroll_3.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "../lv_examples.h"
  2. #if LV_BUILD_EXAMPLES && LV_USE_LIST
  3. static uint32_t btn_cnt = 1;
  4. static void float_btn_event_cb(lv_event_t * e)
  5. {
  6. lv_event_code_t code = lv_event_get_code(e);
  7. lv_obj_t * float_btn = lv_event_get_target(e);
  8. if(code == LV_EVENT_CLICKED) {
  9. lv_obj_t * list = lv_event_get_user_data(e);
  10. char buf[32];
  11. lv_snprintf(buf, sizeof(buf), "Track %d", (int)btn_cnt);
  12. lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf);
  13. btn_cnt++;
  14. lv_obj_move_foreground(float_btn);
  15. lv_obj_scroll_to_view(list_btn, LV_ANIM_ON);
  16. }
  17. }
  18. /**
  19. * Create a list with a floating button
  20. */
  21. void lv_example_scroll_3(void)
  22. {
  23. lv_obj_t * list = lv_list_create(lv_scr_act());
  24. lv_obj_set_size(list, 280, 220);
  25. lv_obj_center(list);
  26. for(btn_cnt = 1; btn_cnt <= 2; btn_cnt++) {
  27. char buf[32];
  28. lv_snprintf(buf, sizeof(buf), "Track %d", (int)btn_cnt);
  29. lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf);
  30. }
  31. lv_obj_t * float_btn = lv_btn_create(list);
  32. lv_obj_set_size(float_btn, 50, 50);
  33. lv_obj_add_flag(float_btn, LV_OBJ_FLAG_FLOATING);
  34. lv_obj_align(float_btn, LV_ALIGN_BOTTOM_RIGHT, 0, -lv_obj_get_style_pad_right(list, LV_PART_MAIN));
  35. lv_obj_add_event_cb(float_btn, float_btn_event_cb, LV_EVENT_ALL, list);
  36. lv_obj_set_style_radius(float_btn, LV_RADIUS_CIRCLE, 0);
  37. lv_obj_set_style_bg_img_src(float_btn, LV_SYMBOL_PLUS, 0);
  38. lv_obj_set_style_text_font(float_btn, lv_theme_get_font_large(float_btn), 0);
  39. }
  40. #endif