【问题标题】:How to change text color of label in segment controller?如何更改段控制器中标签的文本颜色?
【发布时间】:2019-08-18 07:07:17
【问题描述】:

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

请检查我的参考。代码。

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

我想做一些类似附加图像的事情。

提前致谢!!

【问题讨论】:

    标签: temenos-quantum


    【解决方案1】:

    我从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);
    

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

    【讨论】:

    • 您确定此代码完整且有效吗?为什么只对橙色和绿色这样做?
    • 是的,我确信它有效。是的,因为我只是在答案中显示示例,我们可以相应地设置条件。 :)
    • 所以您在实际代码中说您对每种颜色都执行此操作,但在示例中您只对其中两种颜色执行此操作。对吗?
    • 另外,我现在很好奇。您只设置了五行的数据。当您的细分超过五行时会发生什么?
    【解决方案2】:

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

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

    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%运算符,它允许您动态决定皮肤数组中的哪些颜色/皮肤对应于每个数据行,即使数据数组的大小不同。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多