2012-04-30 57 views
6

我有一个布局设置为vbox的主面板。我想添加两个单独的列表到面板。我希望这两个列表垂直堆叠显示,并且当它们溢出主面板的底部时,面板应该简单地滚动。如何在VBOX布局中制作Sencha触摸列表显示?

但是,列表似乎需要在FIT布局中设置,才能显示。适合的布局不允许垂直堆叠物品。

我是否缺少布局系统的功能,该功能允许我通过vbox布局告诉列表完全显示在父级内部?

回答

3

Ext.List组件的超类是Ext.DataView而不是Ext.Panel

因此,您需要在两个单独的面板中添加两个列表,并在超级面板中添加这两个面板。
此外,您将需要使layout:'vbox'为superpanel并layout:'fit'其他两个子面板

这里是你如何能做到这一点。

.... 
.... 
var superpanel = new Ext.Panel({ 
    fullscreen: true, 
    layout: 'vbox',    // to vertically stack two list. 
    items: [ 
     { 
      xtype: 'panel', 
      id: 'panel_1', 
      width: '100%', 
      layout: 'fit', 
      items: [ 
       { 
        xtype: 'list', 
        flex:1, 
        id: 'list1', 
        store: 'samplestore1' 
       } 
      ] 
     }, 
     { 
      xtype: 'panel', 
      id: 'panel_2', 
      width: '100%', 
      layout: 'fit', 
      items: [ 
       { 
        xtype: 'list', 
        id: 'list2', 
        flex:1, 
        store: 'samplestore2' 
       } 
      ] 
     } 
    ] 
}); 
.... 
.... 
+2

我不认为你需要窝在一个包装面板每个列表。我很高兴地将可滚动列表作为vbox容器的头等子项。虽然如果你使用的是vbox,你应该为每个孩子都有flex的值,除非停靠。 – bradgonesurfing

+0

啊!我错过了那个财产。应用'flex'将有助于这两个列表获得相等的空间... –

+1

我会仔细检查这一点,但我认为flex解决方案使每个列表占用父母高度的一半。 (让列表项目在每个列表中滚动)。我希望每个列表都不要滚动,并且要全部列出他们的项目。我希望父面板同时滚动子列表,作为vbox儿童。 (或者你的解决方案是否会这样做?) – Paul

1
var parent = new Ext.Panel({ 
    fullscreen: true, 
    layout: 'vbox', 
    items: [ 
     { 
      xtype: 'list', 
      id: 'list_1', 
      store: 'store1, 
      flex: 1 
     }, 
     { 
      xtype: 'list', 
      id: 'list_2', 
      store: 'store2, 
      flex: 1 
     } 
    ] 
}); 
0

放高度:在列表项“自动”

items: [ 
    { 
     xtype: 'list', 
     height: 'auto' 
    }, 
    { 
     xtype: 'list', 
     height: 'auto', 
    } 
]