2010-11-02 47 views
3

我現有的佈局是兩個div的堆疊 - g:LayoutPanel中的圖層。頂級div應該儘可能大以容納其內容。底部div應占據屏幕上的其餘空間,而不會導致滾動條出現。GWT佈局:「佔用空間的其餘部分。」

頂部div的內容可以改變,所以頂部div的大小可以改變。

我目前的解決方案是一個回調,每當頂部div的內容發生變化時都會觸發。然後,包含的LayoutPanel可以重新計算頂部div的大小,並顯式設置第二層的topbottom屬性佔據剩餘的空間。有沒有更好的辦法?類似的,

<g:LayoutPanel> 
    <g:layer top="0px" height="whatever you need, baby"> 
     <c:SomeWidget/> 
    </g:layer> 
    <g:layer top="the bottom of the first layer" bottom="0px"> 
     <c:Anotherwidget/> 
    </g:layer> 
</g:LayoutPanel> 
+0

如果你根本不需要滾動條,那麼有一個簡單的解決方案:使用帶有overflow:hidden的FlowPanel。但我認爲,當底部面板溢出時,您確實需要顯示滾動條?我也希望看到這樣的解決方案(我的意思是也可以在嚴格模式下工作)。不確定,如果可以使用CSS 2.1(?) – 2010-11-02 18:22:49

+0

是的,我確實需要第二層ScrollPanel的大小。 Arrgh。 – 2010-11-02 21:27:17

回答

0

答案似乎是沒有更好的辦法。手動重新計算並不是很糟糕,當你習慣了!

1

怎麼樣使用DockLayoutPanel

<g:DockLayoutPanel unit='PX'> 
    <north size="10" ui:field='northWidget'> 
    <c:SomeWidget/> 
    </north> 
    <center> 
    <c:Anotherwidget/> 
    </center> 
</g:DockLayoutPanel> 

然後center將佔用剩下的空間。如果要調整頂部的大小,請致電 setWidgetSize(northWidget, newSize);並重新計算center小部件。

+0

但我仍然需要計算'northWidget'的大小,對吧?我正在尋找一種解決方案,它會在northWidget更改大小時自動流動。 – 2010-11-17 04:11:51

0

我覺得HeaderPanel是標準的Widget來做到這一點。也許它是在問題提出後添加的。我們也錯過了它,並有一段時間有我們自己的版本。