Extjs 4:如何动态更改进度条颜色?

Jav*_*hez 5 extjs colors extjs4 progress-bar

问题 答案如下

您好我正在寻找一种简单的方法来改变进度条的颜色,我正在尝试用它来做,看起来像这样:

function (progressBar, value) {
    if (value < 40) {
        progressBar.setColor('red');
    } else if (value >= 40 && value <= 80) {
        progressBar.setColor('yellow');
    } else {
        progressBar.setColor('green');
    }
}
Run Code Online (Sandbox Code Playgroud)

然后通过方法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('')";
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

然后,如果您要创建一个新的进度条,颜色更改在这里是代码:

Ext.create('progressBarCustom', {
    min : 0.20,
    ave : 0.60,
    max : 0.80
});
Run Code Online (Sandbox Code Playgroud)

或者只是使用默认颜色:

Ext.create('progressBarCustom', {
    color : "#4D0099"
});
Run Code Online (Sandbox Code Playgroud)

任何建议都会收到,谢谢:).

小智 0

我建议添加一个监听器来调用您的move事件函数,因为这似乎包含您需要的位置。文档链接

对于 setColor 方面,我相信您想要设置组件style元素。文档链接。希望有帮助。