如何更改段控制器中标签的文本颜色?
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中的哪一个对应于每个数据行,即使数据数组的大小不同。
注意:如果您使用分段部分,这避免了数据可能是矩阵的事实。
我想在每一行中设置不同的标签文本颜色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中的哪一个对应于每个数据行,即使数据数组的大小不同。
注意:如果您使用分段部分,这避免了数据可能是矩阵的事实。