处理自动添加滚动条

时间:2010-09-03 09:09:15

标签: flex scrollbar sizing

我有这样的问题:我正在创建一个容器,它在运行时是内容。这是一个粗略的结构:

- 垂直框

----表格

-------的FormItem

...

-------的FormItem

---- ControlBar的

我已修复form容器的maxHeights以使其保持在屏幕范围内。但是当我得到垂直滚动条时,水平面也会出现(看起来这个VScrollBar的位置不够)。

为了解决这个问题,我已经创建了一个水平滚动出现的监听器,所以如果它出现了,我会稍微增加容器,所以它会正常地支撑另一个滚动条:

form.addEventListener(Event.ADDED, function(event:Event):void{
if(event.target is HScrollBar){
    while(form.horizontalScrollBar && form.horizontalScrollBar.visible && !(form.width > form.maxWidth)){
        form.width += 10;
        form.validateDisplayList();
    }
}
});

我也尝试了validateNow和其他类似的方法。我在这里有什么: 1.正在添加HScrollBar。 我们增加了一点容器的宽度,所以它就消失了。 3.当它消失时,验证在尝试测量不存在的滚动条时抛出空指针异常。我还尝试在验证之前添加validateProperties,但它也没有用。

任何人都可以帮助摆脱这个恼人的卷轴吗? :)

1 个答案:

答案 0 :(得分:0)

问题是 - 如果您的scrollPolicy设置为auto Flex在计算布局时不考虑滚动尺寸。因此,当滚动显示时,它会显示在已经存在的内容上。当内容被滚动隐藏时,会出现水平滚动,因此可以通过滚动访问所有内容。我通常处理的方法是始终将paddingRight(或父项为right时的Canvas)样式属性设置为20(滚动常用宽度为16),因此当滚动出现时它不会什么都不重叠。