084、LVGL日历日期选择与事件

084、LVGL日历日期选择与事件
LVGL日历日期选择与事件一段让人抓狂的调试经历上个月做智能家居中控屏,客户要求日历控件能高亮显示有预约的日期,点击日期弹出对应日程。我心想LVGL的日历控件(lv_calendar)不是现成的吗?结果一跑起来,点击日期没反应,高亮日期全乱套,回调函数里拿到的日期永远是1970年1月1日。当时盯着屏幕看了半小时,差点以为LVGL的日历控件是个半成品。后来翻源码才发现,问题出在事件处理机制上——日历控件的事件触发时机和普通控件完全不同,而且日期数据的获取方式藏得很深。今天就把这些坑填平,顺便把日历控件的完整用法拆开揉碎讲清楚。日历控件的基本骨架先搭一个能跑起来的日历。LVGL的日历控件由两部分组成:lv_calendar本体和lv_calendar_header_dropdown(下拉标题栏)或lv_calendar_header_arrow(箭头标题栏)。别搞混,标题栏是独立的组件,需要手动创建并关联。lv_obj_t*calendar=lv_calendar_create