2012-10-26 62 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