我正在尝试创建一个简单的页面示例,其顶部是菜单栏,底部是BorderLayoutContainter
。我无法弄清楚如何让底部自动适应剩下的尺寸。
我有这样的事情:
public void onModuleLoad() {
MenuBar mbar = new MenuBar();
// Add menus...
BorderLayoutContainer blc = new BorderLayoutContainer();
// Create borderlayout parts...
NorthSouthContainer mainCon = new NorthSouthContainer();
mainCon.addNorthWidget(mbar);
mainCon.addSouthWidget(blc);
ViewPort vp = new ViewPort();
vp.add(mainCon);
RootPanel.get().add(vp);
}
菜单栏显示正确但底部 - BorderLayoutContainer
- 完全被压扁。如果我只是将BorderLayoutContainer
添加到ViewPort
,它会正确显示,即填充整个屏幕。
为什么大小没有从NorthSouthContainer
的南部传递到BorderLayoutContainer
。或者还有其他事情发生了吗?
答案 0 :(得分:0)
几周前我遇到了同样的问题。它似乎是GXT中的一个错误,在某些地方,小部件的css不正确ensureInjected()
。如您所知,您的north-和southwidget从父容器中获取其height属性。您可以通过将样式属性传递给内部小部件来避免此错误,如下所示:
mbar.getElement().getStyle().setProperty("height", "50%");
blc.getElement().getStyle().setProperty("height", "50%");
当然我知道这不是一个非常干净的解决方案,但它有可能。如果要完全访问解决方案,则需要为BorderLayoutContainer实现自己的外观。呼...
答案 1 :(得分:0)
我有同样的问题。作为一种解决方法,如果您将南部窗口小部件包装到另一个Viewport实例中,它适用于我(使用GXT 3.1.1)。
答案 2 :(得分:0)
这是一个官方的错误。您可以尝试使用VerticalLayoutContainer,如下所示 -
VerticalLayoutContainer vlc = new VerticalLayoutContainer();
vlc.add(mBar,new VerticalLayoutData(1,-1));
vlc.add(blc,new VerticalLayoutData(1,1));
在此处VerticalLayoutData了解详情