090、LVGL按钮矩阵布局与事件

发布时间:2026/7/29 15:47:12
090、LVGL按钮矩阵布局与事件 LVGL按钮矩阵布局与事件:从一次诡异的触摸偏移说起上周调试一块基于ESP32-S3的工控面板,客户反馈“按键按下去没反应,但触摸校准没问题”。我盯着屏幕看了半小时,发现一个诡异现象:按钮矩阵最右侧一列的点击事件,总是触发到上一行的对应位置。排查了触摸驱动、坐标转换、事件队列,最后发现罪魁祸首是按钮矩阵的行间距设置——我把row_pad设成了负数,导致LVGL在计算按钮边界时产生了重叠区域。这个坑让我意识到,按钮矩阵(Button Matrix)的布局参数和事件传递机制,远比表面看起来复杂。按钮矩阵的“伪网格”本质LVGL的lv_btnmatrix本质上是一个一维数组的二维映射。它不像lv_table那样有独立的单元格对象,而是通过lv_btnmatrix_set_btn_width()控制每个按钮的宽度比例,配合row_cnt和col_cnt参数,在内部动态计算每个按钮的坐标矩形。这种设计节省了对象数量,但代价是布局参数之间的耦合关系非常微妙。创建按钮矩阵的标准姿势:lv_obj_t*btnm=