1

我目前正在尝试了解 ext js 4 的主题功能,并且在按钮样式方面遇到了一些问题。

使用提供的 scss 变量设置按钮尺寸不太可能,但有一些 javascript 配置选项。因为我不想将这些设置应用于每个按钮实例,所以我正在寻找一种为按钮类设置“配置默认值”的方法。

设置默认高度时,以下方法效果很好:

Ext.button.Button.prototype.height = 15;

不幸的是,这对于“minWidth”配置似乎是不可能的:

Ext.button.Button.prototype.minWidth = 1; //nope, sorry

有没有办法为“minWidth”设置默认值?

4

2 回答 2

1

如果您想为框架中的每个按钮更改它。使用超控系统。

应用程序/覆盖/Button.js

Ext.define('App.overrides.Button', {}, function() {
    Ext.override(Ext.button.Button, {
        minWidth: 20
    });
});

应用程序.js

Ext.onReady(function() {
    /*
     * Load Overrides
     */
    Ext.require([
        'App.overrides.Button'
    ]);
});

var app = Ext.Application({.....

但是,我不确定这是多么明智,因为选项卡之类的东西从按钮延伸出来,并且可能会产生一些不利影响。但这就是它的完成方式。

于 2012-06-21T00:25:26.957 回答
1

简短的回答

Ext.override(Ext.panel.Panel, {
    minButtonWidth: 1
});
Ext.override(Ext.button.Button, {
    minWidth: 1
}); 

更长的答案

设置Ext.button.Button.prototype.minWidth = 1;是正确的(最好使用简短答案中提到的覆盖),但被 ExtJs 设置默认 minWidth 的 75 的内部处理忽略Ext.panel.Panel(参见bridgeToolbars()函数)。因此,如果您要使用面板工具栏之外的按钮,那么您的初始尝试会奏效。

makeButtons()此外,在函数中还有一个硬编码的 minWidth 为 75 个按钮Ext.window.MessageBox

在我看来,你应该打开一个错误报告@sencha,因为应该有一个主题化的、更全局的设置。

更新:这是用 ExtJS 4.1 测试的

于 2012-06-21T10:15:23.227 回答