<mx:Tree/> 只会自动显示垂直滚动条而不会自动显示水平滚动条,貌似是因为没有对
maxHorizontalScrollPosition属性进行动态的处理,一下重写tree组件,可以自动显示水平滚动条。
- package?com.common.tree?{? ?
- import?flash.events.Event;? ?
- ?
- import?mx.controls.Tree;? ?
- import?mx.core.ScrollPolicy;? ?
- import?mx.core.mx_internal;? ?
- ?
- /**? ?
- *?自动显示横向滚动条? ?
- *?@author?chensong? ?
- *? ?
- */? ?
- public?class?AutoSizeTree?extends?Tree?{? ?
- public?function?AutoSizeTree()?{? ?
- super();? ?
-
horizontalScrollPolicy?=?ScrollPolicy.AUTO;? ?
- }? ?
- ?
- override?public?function?get?maxHorizontalScrollPosition():Number?{? ?
- if?(isNaN(mx_internal::_maxHorizontalScrollPosition))? ?
- return?0;? ?
- return?mx_internal::_maxHorizontalScrollPosition;? ?
- }? ?
- ?
- override?public?function?set?maxHorizontalScrollPosition(value:Number):void?{? ?
-
mx_internal::_maxHorizontalScrollPosition?=?value;? ?
- dispatchEvent(new?Event("maxHorizontalScrollPositionChanged"));? ?
-
scrollAreaChanged?=?true;? ?
- invalidateDisplayList();? ?
- }? ?
- ?
- override?protected?function?updateDisplayList(unscaledWidth:Number,?unscaledHeight:Number):void?{ ?
-
?var?diffWidth:Number?=?measureWidthOfItems(0,?0)?-?(unscaledWidth?-?viewMetrics.left?-?viewMetrics.right); ?
- ? ?
-
var?indentation:Number?=?getStyle("indentation");? ?
- ?
-
if?(diffWidth?<=?0)? ?
-
maxHorizontalScrollPosition?=?NaN;? ?
- else? ?
-
maxHorizontalScrollPosition?=?diffWidth?+?indentation;? ?
- super.updateDisplayList(unscaledWidth,?unscaledHeight);? ?
- }? ?
- }? ?
- }??