我在flex中有一个TileList,并且需要能够检测滚动条是否显示,所以我可以改变它所布置项目的大小。检测UIComponent是否有滚动条活动
ScrollPolicy被设置为auto,但是我需要一个像CurrentScrollPolicy这样的变量,它将从关闭变为开启,具体取决于内容。
谢谢
我在flex中有一个TileList,并且需要能够检测滚动条是否显示,所以我可以改变它所布置项目的大小。检测UIComponent是否有滚动条活动
ScrollPolicy被设置为auto,但是我需要一个像CurrentScrollPolicy这样的变量,它将从关闭变为开启,具体取决于内容。
谢谢
感谢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;
}
}
感谢您的帮助。
您需要检查verticalScrollBar。如果它为null,那么没有滚动条。 如果它不是null,那么就有一个滚动条。
或者,如果你不想覆盖列表,你可以有像
if(listInstance.mx_internal::scroll_verticalScrollBar != null){...}
干杯!
我用了很简单的方法来解决这个问题。将滚动位置设置为最大值,因为如果检查它时没有滚动条,它将始终为零,并且它高于零将元素添加到元素,因为必须有滚动条。
yourControl.verticalScrollPosition = yourConrol.maxVerticalScrollPosition;
for (var i:int=0; i <= yourControl.verticalScrollPosition ;i++)
{
yourControl.height = yourControl.height+16;
}
如果super.verticalScrollBar为null,则会抛出空引用异常。你需要'和'操作,而不是'或'。 – alxx 2011-04-21 09:56:18