【问题标题】:ExtJS Layout, Horizontally then grow verticallyExtJS 布局,水平然后垂直增长
【发布时间】:2013-03-13 09:54:11
【问题描述】:

我有一个 Ext.panel.Panel,我想在其中动态添加代表我的应用程序中不同“事物”的其他“较小”面板。该面板位于网格的顶部,与网格的宽度相同。当“较小”面板动态添加到此“容器面板”时,如果所有“小”面板的总宽度大于容器的宽度,我希望面板水平添加,然后垂直添加。

我已经尝试了“fit”、“hbox”、“vbox”等所有方法。

我是否缺少布局类型?

【问题讨论】:

  • 您是否尝试过使用“自动”布局并将display:inline-block 放在嵌套面板上?您是否期望外面板实际上变得更高,或者内面板水平流过面板然后向下流动就足够了吗?
  • 我当然也希望容器面板能够增长。我会试试你的把戏,看看它是否有效,谢谢!

标签: layout extjs4 extjs4.1


【解决方案1】:

我发现在 ExtJS 4.2.2 中使用上面的示例时,面板是垂直堆叠的。

我需要补充:

style: {
    float: 'left'
},

到每个项目,然后一切都很好。

我使用静态配置(如上面的示例)和动态添加/删除(为每个子项使用自定义容器)进行了测试。容器面板每次都以类似流的方式重新渲染。调整浏览器窗口大小时也更正 - 子项移动以适应新的面板大小。

穆雷

【讨论】:

  • 它是否仅适用于 4.2.2 上的动态项目?我试过了,但它不适用于 3.x
【解决方案2】:

你所追求的通常被称为flow 布局,ExtJS 没有开箱即用(如果你问我,他们不这样做有点傻,因为它是一个非常常见的布局并且事实上,他们的大多数数据视图示例都应用了这个,但使用的是 css 而不是布局)。

但是使用没有定义columnWidth 的列布局可以轻松实现。复制this answer

 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
        }]
  });

【讨论】:

  • 现在我要回去做我自己的工作了...我会看看这个...谢谢!
  • 这让我成为了其中的一部分...我正在动态添加东西(不是在配置期间)...在添加之前我需要知道我的宽度尺寸吗?
  • 容器或物品的宽度?
  • 所以...从技术上讲,这是可行的,但是,它对我不起作用,因为我在容器渲染后添加了小面板。感谢您的帮助!
  • 添加孩子时究竟会发生什么?添加孩子后,您可以尝试在容器上调用doLayout() 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 2017-08-26
  • 2015-07-27
  • 1970-01-01
  • 2019-03-24
  • 2017-03-02
相关资源
最近更新 更多