2012-10-26 23 views
1

我无法让ContentPanel获取BorderLayoutContainer中的所有可用高度。GXT 3 ContentPanel autoheight或FillLayout

在版本2.x中,它非常简单,如setLayout(new FillLayout());,但它不再适用于GXT 3.0.x.

为了使我的问题清楚,我已经采取了例如从这里GXT 3 demo, 这里是它的应该是怎样看:Border layout demo 但是当从示例完全相同的代码被复制到我的项目,它看起来像这样: same thing copied to my project

布局似乎被打破。它在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" />

回答

3

的资源管理器分配的大小,可能是一个错误,因为它使例子少便携。大小是从父级(具有Demo和Source的选项卡面板)分配的,而父级又从父级(主选项卡面板)获取它,依此类推。要处理这个问题,请确保设置一个尺寸。

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

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

,它实际上不是必要的 - 任何的容器,只需要一个孩子已经基本上具有FitLayout在GXT 3.主要问题,发生在2中与3中相同 - 有些父母不会将尺寸传递给其孩子 - 并且他们需要以同样的方式解决。

您也可以选择退出类似默认的配平布局行为 - 在任何SimpleContainer(即ContentPanel,FramedPanel等)上调用setResize(false)。尽管如此,您通常会希望这是默认设置。

+0

这解决了问题! 谢谢,科林! – Andrew