在垂直布局中填充可用 space

filling available space inside a vertical layout

在我的 vaadin 项目中,我有一个垂直布局(高度为 100%),里面还有另外两个垂直布局。第一个具有固定高度,而第二个应填充浏览器剩余的 space-window。它将比剩余的 space 具有更大的高度,并且具有 overflow-y: scroll css 属性。我用方法 setExpandRatio 尝试了这个但没有用(高度通常比剩余的 space 高)。我可以只用 vaadin 实现这个,还是我必须为此使用 javascript?

AbstractOrderedLayout root = new VerticalLayout();
root.setHeight(100, Unit.PERCENTAGE);
AbstractOrderedLayout child1 = new VerticalLayout();   
AbstractOrderedLayout child2 = new VerticalLayout();  

child1.setHeight(200, Unit.PIXELS);
root.addComponent(child1);

child2.setHeightUndefined(); 
root.addComponent(child2); // child2 will be filled with items. if its higher than the remaining space, it should be scrollable (overflow-y: auto)
// root.setExpandRatio(child2, 1F);

因此,如果我没理解错的话,您希望第一个区域具有固定高度,第二个区域可能大于剩余高度,因此需要滚动。

如果是这样,布局如下

  • 垂直布局"Main" (sizeFull)

    • VerticalLayout“1”(宽度 100%,高度固定):用固定高度的内容填充此布局
    • 面板(sizeFull + VerticalLayoutMain 上的 setExpandRation 为 1)
      • VerticalLayout“2”(宽度 100%,高度未定义):用您的其他内容填充此布局

此致