如何更改段控制器中标签的文本颜色?

How to change text color of label in segment controller?

我想在每一行中设置不同的标签文本颜色SegmentControl 以编程方式

请检查我的参考。代码。

var arrColors = [
    {"color":"white"},
    {"color":"orange"},
    {"color":"blue"},
    {"color":"yellow"},
    {"color":"gray"}
]; 
this.view.segCont.widgetDataMap = {lblColorName: "color"};
this.view.segCont.setData(arrColors);    

我想做一些类似附件的图片。

提前致谢!!

我从 kony 团队那里得到了解决方案。

1) 为不同的颜色label创建不同的skin见下图:

2) 根据您需要的颜色设置条件 label

var arrColors = [
    {"color": "white"},
    {"color": "orange"},
    {"color": "blue"},
    {"color": "yellow"},
    {"color": "gray"}
];

for (i = 0; i < arrColors.length; i++) {
    if (arrColors[i].color === "orange") {
        arrColors[i].color = {
            "skin": "sknLblOrange"
        };
    } else {
        arrColors[i].color = {
            "skin": "sknLblGreen"
        };
    }
}

this.view.segCont.widgetDataMap = {
    lblColor: "color"
};
this.view.segCont.setData(arrColors);

希望对您有所帮助。快乐编码:)

如果您的数据是有限的和静态的,或者如果数据数组的长度始终相同(例如菜单),这很好。

但是,如果您的数据是动态的,您应该考虑以下解决方案:

var arrColors = [
    {"skin": "whiteRowSkin"},
    {"skin": "orangeRowSkin"},
    {"skin": "blueRowSkin"},
    {"skin": "yellowRowSkin"},
    {"skin": "grayRowSkin"}
];

this.view.segCont.widgetDataMap = {
    lblColor: "color"
    // plus any other properties you need for this data.
};

// Lets assume this getData function fetches your dynamic data from a service.
var segData = getData();

for (var i = 0; i < segData.length; i++) {
    var colorIndex = i % arrColors.length;
    segData[i].color = arrColors[colorIndex];
};

this.view.segCont.setData(segData);

上面的关键是Modulus/Remainder %运算符,它可以让你动态决定皮肤数组中的colors/skins中的哪一个对应于每个数据行,即使数据数组的大小不同。

注意:如果您使用分段部分,这避免了数据可能是矩阵的事实。