问题 以下答案
您好,我正在寻找一种简单的方法来更改进度条的颜色,我正在尝试使用它,看起来像这样:
function (progressBar, value) {
if (value < 40) {
progressBar.setColor('red');
} else if (value >= 40 && value <= 80) {
progressBar.setColor('yellow');
} else {
progressBar.setColor('green');
}
}
然后通过方法progressbar已经有的方式改变颜色的方式,setUI或其他可以工作的方式也很好。
感谢。
解决方案
我找到了这样做的方法,在这里,我创建了一个自定义进度条,在那里我使用了监听器更新,然后这个将接收进度条的实际值,而条形本身,我取obj并找到进度条的样式,我在其中修改backgroundColor和borderRightColor以及我想要的十六进制颜色,并将backgroundImage设置为空URL然后它将允许backgroundcolor显示。
我也创建了一个发送默认颜色的选项。
以下是代码:
Ext.define("progressBarCustom", {
extend: 'Ext.ProgressBar',
alias: 'widget.progressBarCustom',
max: null,
ave: null,
min: null,
color: null,
initComponent: function () {
var me = this;
me.width = 300;
me.margin = '5 5 0 5';
me.callParent(arguments);
},
listeners: {
update: function (obj, val) {
if (this.max != null && this.ave != null && this.min != null) {
if (val * 100 <= this.min) {
obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#FF0000";
obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#FF0000";
obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
} else if (val * 100 <= this.ave) {
obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#FFFF00";
obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#FFFF00";
obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
} else {
obj.getEl().child(".x-progress-bar", true).style.backgroundColor = "#009900";
obj.getEl().child(".x-progress-bar", true).style.borderRightColor = "#009900";
obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
}
} else if (this.color != null) {
obj.getEl().child(".x-progress-bar", true).style.backgroundColor = this.color;
obj.getEl().child(".x-progress-bar", true).style.borderRightColor = this.color;
obj.getEl().child(".x-progress-bar", true).style.backgroundImage = "url('')";
}
}
}
});
然后,如果您要创建一个新的进度条,颜色更改在这里是代码:
Ext.create('progressBarCustom', {
min : 0.20,
ave : 0.60,
max : 0.80
});
或仅使用默认颜色:
Ext.create('progressBarCustom', {
color : "#4D0099"
});
将收到任何建议,谢谢:)。
答案 0 :(得分:0)
我建议添加一个在move
事件上调用您的函数的侦听器,因为它似乎包含您需要的位置。 Documentation link。
对于setColor方面,我相信你想要设置组件style
元素。 Documentation link。希望有所帮助。