【问题标题】:Dealing with automatic adding scrollbars处理自动添加滚动条
【发布时间】:2010-09-03 09:09:14
【问题描述】:

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

--VBox

----表格

-------表单项

...

-------表单项

----控制栏

我已为 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。 2.我们增加一点容器的宽度,让它消失。 3. 当它消失时,当它试图测量不存在的滚动条时,验证会抛出空指针异常。我也尝试在验证之前添加validateProperties,但也没有用。

谁能帮忙摆脱这个烦人的卷轴? :)

【问题讨论】:

  • 您是否在组件上设置了 Horizo​​ntalScrollPolicy,如果是,设置为什么值?
  • horizo​​ntalScrollPolicy 也因为没有明确设置verticalScrollPolicy。因此,据我所知,它们应该设置为自动。

标签: apache-flex scrollbar sizing


【解决方案1】:

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

【讨论】:

  • 抱歉这么晚才回复。我已经尝试过您的解决方案,但它不适用于我的情况sigh。无论如何,非常感谢您的提示!
  • 好的,那么如何监听 VScrollBar 添加的事件(而不是 HScrollBar)并在处理程序中更改适当的样式。您还必须监听已删除的事件。
猜你喜欢
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2019-02-06
  • 2023-03-26
  • 1970-01-01
  • 2012-08-03
相关资源
最近更新 更多