LVGL选项卡控件标题按键样式不生效

LVGL选项卡控件,修改切换按钮样式时,选中状态的样式设置没有生效。


    lv_obj_t *uTableView=lv_tabview_create(lv_screen_active());
    lv_tabview_set_tab_bar_position(uTableView,LV_DIR_TOP);
    lv_tabview_set_tab_bar_size(uTableView,40);

    lv_obj_t *tab0=lv_tabview_add_tab(uTableView,"Selection");
    lv_obj_t *tab1=lv_tabview_add_tab(uTableView,"View");
    lv_obj_t *tab2=lv_tabview_add_tab(uTableView,"Meeting");

    lv_obj_t *uTable0=lv_label_create(tab0);
    lv_label_set_text_fmt(uTable0,"Hello Tabview %3d",0);
    lv_obj_center(uTable0);
    lv_obj_t *uTable1=lv_label_create(tab1);
    lv_label_set_text_fmt(uTable1,"Hello Tabview %d",1);
    lv_obj_center(uTable1);
    lv_obj_t *uTable2=lv_label_create(tab2);
    lv_label_set_text_fmt(uTable2,"Hello Tabview %d",2);
    lv_obj_center(uTable2);

    lv_tabview_set_active(uTableView,0,LV_ANIM_OFF);
 
    lv_obj_t *uTabBtn=lv_tabview_get_tab_bar(uTableView);
    
    lv_obj_set_style_bg_color(uTabBtn,lv_color_hex(0xb37979),LV_PART_MAIN|LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(uTabBtn,LV_OPA_80,LV_PART_MAIN|LV_STATE_DEFAULT);
    lv_obj_set_style_text_color(uTabBtn,lv_color_hex(0xffffff),LV_PART_MAIN|LV_STATE_DEFAULT);

    lv_obj_set_style_bg_color(uTabBtn,lv_color_hex(0xff0000),LV_PART_MAIN|LV_STATE_CHECKED);
    lv_obj_set_style_bg_opa(uTabBtn,LV_OPA_80,LV_PART_MAIN|LV_STATE_CHECKED);
    lv_obj_set_style_text_color(uTabBtn,lv_color_hex(0x00ff00),LV_PART_MAIN|LV_STATE_CHECKED);
    lv_obj_set_style_border_width(uTabBtn,0,LV_PART_MAIN|LV_STATE_CHECKED);

lv_obj_set_style_bg_color(uTabBtn, lv_palette_darken(LV_PALETTE_ORANGE, 3), LV_PART_ITEMS | LV_STATE_CHECKED);试试这个

我这个是V8的,他这个应该是个矩阵按钮

谢谢,不行,我用的是V9.1的版本,刚试了V8这样可以。

这个返回的是一个容器,V8和V9的这个获取容器的函数接口不一样,V8是 lv_tabview_get_tab_btns(tabview) V9是lv_tabview_get_tab_bar(tabview) ;我觉得通过获得容器然后获得子对象按钮,一个个设置样式应该可以实现,但那样做似乎太繁琐了。

v9的tb的选项卡栏中的按钮是一个个独立的btn控件,所以只能一个个单独去设置样式,建议封装一个函数,遍历选项卡栏中的btn修改其样式