2014-09-25 24 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,我发现它有点笨拙。