我们最近将ext-js从4.1更新到4.2。在 4.1 中,以下代码可以调整此处使用的 vbox 的子项的大小。我们可以在这些孩子之间拖动边框,两个项目都会调整大小。
在 4.2 中,无法调整这些子项的大小。当指向正确的空间时,甚至光标也不会改变形状。
Ext.define('Example.view.NavPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.exampleNavPanel',
requires: ['Example.view.example.List', 'Example.view.example2.List', 'Example.view.paneledycji.EditTabPanel'],
layout: {
type: 'vbox',
align: 'stretch',
pack: 'start'
},
items: [
{
xtype: 'panel',
title: 'Navpanel',
collapsible: true,
flex: 1,
layout: {
type: 'hbox',
pack: 'start',
align: 'stretch'
},
items: [
{xtype: 'exampleList', flex: 1},
{xtype: 'example2List', flex: 3}
]
},
{
xtype: 'editTabPanel',
flex: 1
}
]
});
我尝试添加
resizable:true
到第一个孩子。它使光标在指向边框时改变形状,我可以拖动它......但孩子们不会调整大小。当我从第一个孩子中删除 flex 时,我终于可以调整项目的大小,但它几乎没有问题:
- 我可以在高度和宽度上调整第一项的大小,我只想要高度,这就是它在 4.1 中的工作方式
- vbox将为第一个孩子提供尽可能多的空间,如果第一个孩子太大,第二个孩子甚至不在窗口中,因此无法看到或调整第一个孩子的大小,因为边框在屏幕外
- 在任何一个孩子身上设置最小身高完全没有效果
我希望能够为上部孩子设置最小和最大高度,理想情况下以百分比为单位,并禁用宽度调整大小。理想情况下,我还希望能够为两个孩子设置默认大小。我无法使用 docs.sencha.com 列出的任何配置组合来解决它。我必须做什么才能实现此效果?
boxready
事件在初始布局后删除 flex
属性。这样,您可以从初始自动调整大小中受益,但它不会阻止以后调整组件的大小。
对于第二个问题,请使用 resizeHandles
选项指定可以抓取以调整大小的边。
Ext.define('Example.view.NavPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.exampleNavPanel',
layout: {
type: 'vbox',
align: 'stretch'
},
items: [{
xtype: 'panel',
title: 'Navpanel',
flex: 1,
resizable: true,
resizeHandles: 's',
listeners: {
single: true,
boxready: function() {
delete this.flex;
}
}
},{
xtype: 'component',
html: 'editTabPanel',
flex: 1
}]
});