`

Flex中实现tree水平滚动条自动加载

阅读更多
Flex中实现tree水平滚动条自动加载


flex中的tree有一个horizontalScrollPolicy的属性,值可以用三个:on,off,auto。
on:表示水平滚动条一直都出现
off:表示去除水平滚动条
auto:顾名思义。就是自动加载水平滚动条
然而,在自定义了一个树形列表控件后,设置horizontalScrollPolicy=“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); 
		}

加上这三个方法后,水平滚动条如愿出现了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics