lvgl实现类似购物车左滑删除效果

通过lvgl scroll属性lv_obj_set_scroll_snap_x实现类似移动端左滑删除商品的效果,在esp32上效果还行:

需要注意父级元素只能设置一屏大小lv_obj_set_size(ui_item, lv_pct(100), 74),通过lv_obj_set_flex_flow来实现平铺遮盖

源码如下:

    lv_obj_t * ui_main = lv_obj_create(ui_page);
    lv_obj_remove_style_all(ui_main);
    lv_obj_set_size(ui_main, lv_pct(100), LV_SIZE_CONTENT);
    lv_obj_set_y(ui_main, 76);
    lv_obj_set_flex_flow(ui_main, LV_FLEX_FLOW_COLUMN);
    for (size_t i = 0; i < 5; i++)
    {
        lv_obj_t * ui_item = lv_obj_create(ui_main);
        lv_obj_remove_style_all(ui_item);
        lv_obj_set_size(ui_item, lv_pct(100), 74);
        lv_obj_set_flex_flow(ui_item, LV_FLEX_FLOW_ROW);
        lv_obj_set_scroll_dir(ui_item, LV_DIR_HOR); // 只允许水平方向移动
        lv_obj_set_scroll_snap_x(ui_item, LV_SCROLL_SNAP_END); //子对象与滚动对象的右侧对齐
        
        lv_obj_t * ui_product = lv_obj_create(ui_item);
        lv_obj_remove_style_all(ui_product);
        lv_obj_set_size(ui_product, 720, 74);
        lv_obj_set_style_bg_color(ui_product, lv_color_hex(0x262626), LV_PART_MAIN);
        lv_obj_set_style_bg_opa(ui_product, 255, LV_PART_MAIN);
        lv_obj_set_style_border_width(ui_product, 1, LV_PART_MAIN);
        lv_obj_set_style_border_side(ui_product, LV_BORDER_SIDE_BOTTOM, LV_PART_MAIN);
        lv_obj_set_style_border_color(ui_product, lv_color_hex(0x404040), LV_PART_MAIN);
        lv_obj_set_style_border_opa(ui_product, 255, LV_PART_MAIN);
        lv_obj_t * ui_del = lv_obj_create(ui_item);
        lv_obj_remove_style_all(ui_del);
        lv_obj_set_size(ui_del, 74, 74);
        lv_obj_set_style_bg_color(ui_del, lv_color_hex(0xff3535), LV_PART_MAIN);
        lv_obj_set_style_bg_opa(ui_del, 255, LV_PART_MAIN);
    }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值