GST中的NorthSouthContainer布局大小

时间:2013-12-17 04:44:29

标签: gwt extjs gxt

我正在尝试创建一个简单的页面示例,其顶部是菜单栏,底部是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。或者还有其他事情发生了吗?

3 个答案:

答案 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了解详情