Flex:在我想要的控件上获取滚动条,仅在可视区域中

时间:2014-09-25 19:39:48

标签: flex layout scrollbar flex3

diagram of layout problem

Flex滚动条让我非常难过。我想确切地控制它们出现的哪些方框,但经过几个小时的随机尝试后,我的最佳解决方案(见下文)似乎有点笨拙且不可靠。如果我强制滚动条出现,(* ScrollPolicy =“on”)滚动条显示为禁用,因为它横跨整个框的大小,即使它超出了可视区域的界限。

我在页面顶部有一个框,它从屏幕的一侧开始运行,这很好 - 让它从侧面跑开,不要给它滚动条。但我有另外一个侧面运行的盒子,这也是可以接受的,但是我希望滚动条为区域提供区域


现在我能做的最好的事情如下:我发现你在我的图表中看到的主框的父级(实际上是伟大的曾祖父母)永远不会比可视区域更大,这是一个{ {1}}。然后我强制包含我的东西的框的父级的大小下降到父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--> es,mx:*Box es甚至是mx:Canvas的层次结构非常高。

它似乎有效,但它可能不必要地复杂化,我觉得客户会找到一种让它失败的方法。

我正在使用3.5 SDK。

1 个答案:

答案 0 :(得分:0)

最后,我能做的最好的事情是在mx:Canvas中包装我想要的滚动条,然后将其maxWidth设置为父组件width仅限于我想要的宽度,最后在mx:Box内加mx:Canvas。至少,在大多数情况下,当控件垂直堆叠时,这似乎有效,我希望水平滚动条跨越mx:Canvas的整个宽度。通常这已经足够了,并且不知何故垂直滚动条问题已经解决了,但是在几个场合,我不得不求助Flex: getting the height of a collection of controls计算一些子聚合控件的maxHeight,我发现有点kludgy。