检测UIComponent是否有活动的滚动条

时间:2009-05-20 08:12:17

标签: flex flex3 air

我在flex中有一个TileList,需要能够检测滚动条是否显示,所以我可以改变它所布置的项目的大小。

ScrollPolicy设置为auto,但我需要一个像CurrentScrollPolicy这样的变量,它会根据内容从off变为on。

由于

4 个答案:

答案 0 :(得分:5)

感谢eBuildy,你的权利!

我创建了一个示例,它还考虑了滚动条在不需要时隐藏而不是设置为null的事实:

   public class CustomTileList extends TileList
{

    public function CustomTileList()
    {
        super();
    }

    /**
     * Returns true if the vertical scroll bar is displayed
     * @return Boolean
     *
     */
    public function hasVerticalScrollBar():Boolean
    {
        if (super.verticalScrollBar == null || super.verticalScrollBar.visible == false)
            return false;
        return true;
    }

}

感谢您的帮助。

答案 1 :(得分:4)

或者,如果您不想覆盖列表,可以使用类似

的内容
if(listInstance.mx_internal::scroll_verticalScrollBar != null){...}

干杯!

答案 2 :(得分:1)

我使用了非常简单的技巧来解决这个问题。将滚动位置设置为最大值,因为当没有滚动条时它将始终为零,如果您检查它并且它高于零,则为元素添加高度,因为必须有滚动条。

yourControl.verticalScrollPosition = yourConrol.maxVerticalScrollPosition;

for (var i:int=0; i <= yourControl.verticalScrollPosition ;i++)
{
     yourControl.height = yourControl.height+16;
}

答案 3 :(得分:0)

您需要检查verticalScrollBar。如果为null则没有滚动条。 如果它不为null,则会有一个滚动条。