lvgl esphome 화면 버튼 터치 시 화면 스와이프(탭뷰 이동)를 방지하는 설정입니다.
♨ 카랜더 일정 :
2025년04월05일
링크
첨부
본문
● lvgl esphome 화면 버튼 터치 시 화면 스와이프(탭뷰 이동)를 방지하는 설정입니다.
yaml
복사편집
# ====^===============================================================
# lvgl esphome 화면 버튼 터치 시 화면 스와이프(탭뷰 이동)를 방지하는 설정입니다.
# ※ 이 코드는 반드시 pages: id 하위의 widgets 끝에 위치해야 정상 적용됩니다.
on_load:
- lambda: |-
// 전체 화면의 터치 이벤트 방지
// 기본적으로 LVGL 객체는 클릭(터치) 가능 상태이며,
// 여기선 터치가 화면 전체에 퍼지는 걸 막습니다.
lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_CLICKABLE);
// 탭바(tabview) 자체는 터치 허용 (클릭만 가능)
// 아래 버튼 등을 눌러서 탭을 전환할 수 있게 허용합니다.
lv_obj_add_flag(id(widgets_page_tap)), LV_OBJ_FLAG_CLICKABLE);
// 탭뷰 안쪽의 콘텐츠 컨테이너를 스크롤 불가능하게 만듭니다.
// 탭 간 좌우 스와이프 전환(제스처)을 완전히 차단합니다.
lv_obj_t *content = lv_tabview_get_content(id(widgets_page_tap));
lv_obj_clear_flag(content, LV_OBJ_FLAG_SCROLLABLE); // 스와이프 방지
# ====^===============================================================
✅ 요약 기능 설명
항목 | 역할 |
---|---|
lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_CLICKABLE) | 전체 화면 터치 차단 (불필요한 터치 이벤트 방지) |
lv_obj_add_flag(id(widgets_page_tap), LV_OBJ_FLAG_CLICKABLE) | 탭바 클릭은 허용 (버튼 클릭을 통한 탭 전환 가능) |
lv_tabview_get_content(...) + clear_flag(...SCROLLABLE) | 탭뷰의 좌우 스와이프 제스처 완전 차단 (정확한 버튼 기반 제어만 허용) |
???? 팁
이 방식은 탭 전환을 버튼이나 탭바 아이템 클릭으로만 제어할 수 있게 만들어서, 불안정한 스와이프 오동작 방지에 최적입니다.
특히 버튼 방식으로 탭을 전환하면 명확한 클릭 이벤트 처리 + UI 안정성이 매우 향상됩니다.
상위 컨테이너가 클릭 가능한 상태면 LV_OBJ_FLAG_CLICKABLE로도 터치가 전파되므로,
반드시 스크린 루트인 lv_scr_act() 기준에서 플래그를 지워야 합니다.
필요하시면 버튼으로 탭 전환하는 예제나, 탭바 버튼에 아이콘 삽입 예시도 도와드릴게요!
지금 구성이 거의 LVGL 터치 처리 베스트 프랙티스입니다. 멋진 적용이에요 ????
뷰PDF 1,2
office view
관련자료
-
이전
-
다음
댓글목록
등록된 댓글이 없습니다.