LVGL基础控件:列表(List)从一次诡异的触摸偏移说起去年做一款智能家居中控屏,用LVGL 8.3做UI。列表控件里塞了20多个设备条目,滑动起来倒是流畅,但有个怪现象——点击列表项时,触摸响应区域总是往右偏了大概30像素。排查了半天,发现是列表项里嵌了个图标,图标宽度没算进列表项的点击热区。当时在lv_list_add_btn之后手动调了lv_obj_set_width,结果把列表项内部的默认布局搞乱了。后来翻源码才发现,列表项本质上是个lv_btn,它的宽度默认继承父容器,但如果你手动改了宽度,LVGL的点击区域计算会基于你设置的值,而不是视觉上看到的实际内容区域。这个坑让我意识到:列表控件看似简单,但它的内部结构、滚动机制、事件传递,都有不少值得深挖的细节。列表控件的本质:一个带滚动的按钮容器LVGL的lv_list,拆开来看其实就三层:列表容器:一个lv_obj,默认开启滚动(lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLLABLE)),并且会限制子对象排列方向为垂直。列表文本:lv_list_add_text添加的,本质是个lv_label,只读,不能点击。列