0

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

--VBox

- - 形式

--------表单项

...

--------表单项

----控制栏

我已经为容器修复了 maxHeights 以将form其保持在屏幕范围内。但是当我得到垂直滚动条时,也会出现水平滚动条(似乎这个 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正在添加。2.我们增加一点容器的宽度,让它消失。3. 当它消失时,当它试图测量不存在的滚动条时,验证会抛出空指针异常。我也尝试validateProperties在验证之前添加,但它也没有奏效。

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

4

1 回答 1

0

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

于 2010-09-03T09:54:13.823 回答