2014-09-25 53 views
0

diagram of layout problem軟硬度:在我想要的控制,僅在可視區域

的Flex滾動條給了我一個很艱難的時間越來越滾動條。我想控制他們出現的那些盒子,但經過幾個小時的隨機試驗後,我的最佳解決方案(見下文)似乎有點不可靠並且不可靠。如果我強制顯示滾動條(* ScrollPolicy =「on」),滾動條會顯示爲禁用狀態,因爲它橫跨框的整個大小,即使它超出了可查看區域的邊界。

我在頁面的頂部有一個盒子,它在那個屏幕的邊上運行,這很好 - 讓它跑到一邊,不要給它一個滾動條。但我有另一個框,其中運行一邊,這也是可以接受的,我想要滾動條服務該區域只有該區域我希望這些滾動條出現在可見區域。也就是說,我不想移動水平滾動條,這樣我就可以看到垂直滾動條。


現在是我能做的最好如下:我發現我的圖表中,你看到的主箱的父(這實際上是偉大偉大祖父母),從來沒有得到比可視面積更大,這是一個mx:Canvas。然後,我強制將包含我的東西的包裝盒父母的大小降低到父母mx:Canvas的大小,然後導致滾動條出現在我想要的位置。因此,它是這樣的:

<mx:Canvas id="main_canvas" width="100%" height="100%"> 

很多是父母

<mx:Box width="100%" height="100%" maxHeight="{main_canvas.height}" maxWidth="{main_canvas.width}"> <!--box containing the box that should show scroll bars--> 
    <mx:Box width="100%" height="100%"> <!--box that should show scroll bars--> 

標籤

上述標籤的其餘部分是一個抽象的,順便說一句其他代碼。由於我進行了大量的實驗,試圖讓滾動條位於我想要的位置,因此存在非常高的層次結構mx:*Box es,mx:Canvas es甚至mx:VDividedBox

它似乎有效,但它可能是不必要的複雜,我有一種感覺,客戶會找到一種方法使其失敗。

我正在使用3.5 SDK。

+0

謝謝,夥計們,但我已經得到了Tumbleweed徽章:) 但是如果有人在我的問題上有錯,我樂於接受建議。我甚至不一定否決編輯。 – Opux 2014-09-30 15:51:58

回答

0

最後,我能做的最好的是包無論我想有一個mx:Canvas滾動條,然後設置其maxWidth到父組件的width是有限的,以我想要的寬度,最後把一個mx:Boxmx:Canvas。至少,在大多數情況下,當控件垂直堆疊時,它似乎工作正常,我想要一個水平滾動條跨越整個寬度mx:Canvas。通常這已經足夠了,不知怎的,垂直滾動條問題已經排除了,但是在幾次偶爾的討論中,我不得不求助於Flex: getting the height of a collection of controls來計算一些子集合控件的maxHeight,我發現它有點笨拙。