2009-05-20 43 views
0

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

ScrollPolicy被设置为auto,但是我需要一个像CurrentScrollPolicy这样的变量,它将从关闭变为开启,具体取决于内容。

谢谢

回答

5

感谢eBuildy,您的权利!

我已经创建了一个例子也考虑到滚动条获取隐藏在不需要的时候,而不是重新设置为空的事实:

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; 
    } 

} 

感谢您的帮助。

+0

如果super.verticalScrollBar为null,则会抛出空引用异常。你需要'和'操作,而不是'或'。 – alxx 2011-04-21 09:56:18

0

您需要检查verticalScrollBar。如果它为null,那么没有滚动条。 如果它不是null,那么就有一个滚动条。

4

或者,如果你不想覆盖列表,你可以有像

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

干杯!

1

我用了很简单的方法来解决这个问题。将滚动位置设置为最大值,因为如果检查它时没有滚动条,它将始终为零,并且它高于零将元素添加到元素,因为必须有滚动条。

yourControl.verticalScrollPosition = yourConrol.maxVerticalScrollPosition; 

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