我有一个 Ext.panel.Panel,我想在其中动态添加其他代表我的应用程序中不同“事物”的“较小”面板。此面板位于网格的顶部,与网格的宽度相同。当“较小”面板动态添加到此“容器面板”时,如果所有“小”面板的总宽度大于容器的宽度,我希望面板水平添加,然后垂直添加。
我试过'fit','hbox','vbox',一切。
我错过了布局类型吗?
我发现在 ExtJS 4.2.2 中使用上面的示例时,面板是垂直堆叠的。
我需要补充:
style: {
float: 'left'
},
到每个项目,然后一切都很好。
我使用静态配置(如上面的示例)和动态添加/删除(为每个子项使用自定义容器)进行了测试。容器面板每次都以类似流的方式重新渲染。在调整浏览器窗口大小时也更正 - 移动子项以适应新的面板大小。
默里
你所追求的通常被称为flow
布局,ExtJS 没有开箱即用(如果你问我,他们不这样做有点傻,因为它是一种非常常见的布局,实际上是应用在他们的大多数数据视图示例,但使用 css 而不是布局)。
但是它可以很容易地使用没有columnWidth
定义的列布局来实现。复制这个答案:
Ext.create('Ext.Panel', {
width: 500,
height: 280,
title: "ColumnLayout Panel",
layout: 'column',
renderTo: document.body,
items: [{
xtype: 'panel',
title: 'First Inner Panel',
width: 250,
height: 90
},{
xtype: 'panel',
title: 'Second Inner Panel',
width: 200,
height: 90
}, {
xtype: 'panel',
title: 'Third Inner Panel',
width: 150,
height: 90
}]
});