我无法让ContentPanel占用BorderLayoutContainer内部的所有可用高度。

在2.x版中,它和setLayout(new FillLayout());一样简单,但是对于GXT 3.0.x不再有效。

为了使我的问题更清楚,我从GXT 3 demo处获取了示例,
它的外观如下:
但是当将示例中的相同代码复制到我的项目中时,它看起来像这样:


布局似乎已损坏。它在Chrome 22.0.x和Firefox 16.0.1中呈现相同的效果。
我使用GWT 2.4和GXT 3.0.1。
我的html页面包含

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


<link rel="stylesheet" type="text/css" href="modeluname/reset.css" />

最佳答案

资源管理器分配了一个大小,可能是一个错误,因为它使示例的可移植性降低了。大小是从父级(具有“演示”和“源”的选项卡面板)分配的,而大小又从父级(主选项卡面板)获取,依此类推。要解决此问题,请确保设置大小。

通常,您不想在根窗口小部件上设置大小-您只想使其始终适合浏览器中的可用空间。这意味着您要将所有内容添加到视口中。从http://www.sencha.com/examples/#ExamplePlace:borderlayout%28uibinder%29的onModuleLoad的源进行工作:

public void onModuleLoad() {
  Viewport viewport = new Viewport();
  viewport.setWidget(asWidget());
  RootPanel.get().add(viewport);
}


FitLayout而言,实际上并没有必要-任何仅容纳一个孩子的容器在GXT 3中实际上已经具有FitLayout。2中出现的主要问题与3中相同-某些父级不是将大小传递给子项-需要以相同的方式解决。

您也可以选择不使用默认的类似于fitlayout的行为-在任何SimpleContainer(即ContentPanel,FramedPanel等)上调用setResize(false)。通常,您会希望启用它,这是默认设置。

10-06 14:22