1

我无法让 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" />

4

1 回答 1

3

Explorer 正在分配大小,这可能是一个错误,因为它使示例的可移植性降低。大小是从父级(带有 Demo 和 Source 的选项卡面板)分配的,而后者又从父级(主选项卡面板)获取大小,依此类推。为了解决这个问题,请确保设置一个大小。

通常,您不想在根小部件上设置大小 - 您只想使其始终适合浏览器中的可用空间。这意味着您要将所有内容添加到视口。从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)。不过,您通常希望将其打开,这是默认设置。

于 2012-10-26T23:33:19.733 回答