问题

lv_list里的按钮,如果在边缘未出现完整,点击后会自动完整停靠边缘,我想将这个功能关闭.

解决:

1
lv_obj_clear_flag(/*列表按钮*/,LV_OBJ_FLAG_SCROLL_ON_FOCUS);  // <--这里

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
for (int i = 0; i < 4; ++i) {

// 横向列表
mainWin.tabview.arrLRList[i] = lv_list_create(mainWin.tabview.arrTab[i]);
lv_obj_set_pos(mainWin.tabview.arrLRList[i], 0, 0);
lv_obj_set_size(mainWin.tabview.arrLRList[i], 1024 - 196, 600 - 67);
removeBorder(mainWin.tabview.arrLRList[i]);
lv_obj_set_scrollbar_mode(mainWin.tabview.arrLRList[i], LV_SCROLLBAR_MODE_OFF);

lv_obj_set_flex_flow(mainWin.tabview.arrLRList[i], LV_FLEX_FLOW_ROW); // 横向滑动
lv_obj_set_scroll_dir(mainWin.tabview.arrLRList[i], LV_DIR_HOR);

lv_obj_clear_flag(mainWin.tabview.arrLRList[i], LV_OBJ_FLAG_SCROLL_ELASTIC); // 清除回弹效果


// 列表按键
for (int j = 0; j < 15; ++j)
{
// 针对“专业烘干”只有12个按钮的情况
//if (!mainWin.tabview.arrListImgRes[i][j])
//continue;
mainWin.tabview.arrListBtn[i][j] = lv_list_add_btn(mainWin.tabview.arrLRList[i], 0, 0);
lv_obj_remove_style_all(mainWin.tabview.arrListBtn[i][j]);
lv_obj_set_size(mainWin.tabview.arrListBtn[i][j], (1024 - 196) / 3, 600 - 67);
lv_obj_set_style_outline_width(mainWin.tabview.arrListBtn[i][j], 2, 0);
lv_obj_set_style_outline_color(mainWin.tabview.arrListBtn[i][j], lv_color_black(), 0);

lv_obj_add_event_cb(mainWin.tabview.arrListBtn[i][j],cb_ListBtn,LV_EVENT_ALL,NULL);
lv_obj_clear_flag(mainWin.tabview.arrListBtn[i][j],LV_OBJ_FLAG_SCROLL_ON_FOCUS); // <--这里
}
}