`

如何让Flex的Tree显示水平滚动条

阅读更多

论坛 一直有人问为何设置了twaver.controls.Tree的horizontalScrollPolicy为 ScrollPolicy.AUTO,可是还是没有横向滚动条。这是由于Adobe出于性能的考虑,没有计算maxHorizontalScrollPosition的值。本文贴出了解决方案,效果如下:


 

从原始Tree继承出新的类AutoSizeTree:

package {
	import flash.events.Event;

	import mx.core.ScrollPolicy;
	import mx.core.mx_internal;

	import twaver.DataBox;
	import twaver.controls.Tree;

	public class AutoSizeTree extends Tree {
		public function AutoSizeTree(dataBox:DataBox=null) {
			super(dataBox);
			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);

			if (diffWidth <= 0)
				maxHorizontalScrollPosition = NaN;
			else
				maxHorizontalScrollPosition = diffWidth;

			super.updateDisplayList(unscaledWidth, unscaledHeight);
		}
	}
}

测试代码如下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
				xmlns:tw="http://www.servasoftware.com/2009/twaver/flex"
				applicationComplete="init()" xmlns:local="*">
	<mx:Script>
		<![CDATA[
			import twaver.*;

			private function init():void {
				var box:ElementBox = new ElementBox();

				var group:Group = new Group();
				group.name = "Group";
				box.add(group);

				for(var i:int=0; i<20; i++){
					var node:Node = new Node();
					node.name = "Node with long long long long long long name " + Utils.randomInt(10000000);
					group.addChild(node);
					box.add(node);
				}

				tree.dataBox = box;
				tree.callLater2(function():void {
					tree.expandAll();
				});
			}
		]]>
	</mx:Script>
	<local:AutoSizeTree id="tree" width="300" height="100%"/>
</mx:Application>

如果您数据量少,性能不是大问题,不妨试一试,完整工程代码见附件:TestAutoSizeTree

 

 

 

 

 

 

 

 

  • 大小: 13.7 KB
分享到:
评论

相关推荐

    flex tree 自动显示横向滚动条

    flex tree 自动显示横向滚动条 自定义重写

    flex tree自动显示横向滚动条实现代码

    标题所提及的“flex tree自动显示横向滚动条实现代码”提供了一个自定义的解决方案,通过创建一个名为`AutoSizeTree`的类来扩展`mx.controls.Tree`,使得在内容溢出时能够自动显示横向滚动条。 首先,我们创建一个...

    flex3 Tree右键菜单

    当Tree的内容超出其可视区域时,会自动出现水平或垂直滚动条。你可以通过设置`horizontalScrollPolicy`和`verticalScrollPolicy`属性来控制滚动条的行为,如`ScrollPolicy.ON`表示始终显示,`ScrollPolicy.OFF`表示...

    flex的tree动态加载大量数据与滚动条相关问题探讨

    在进行前端开发时,特别是在使用Adobe Flex技术构建富互联网应用(RIA)中,处理大量数据的动态加载以及在Tree组件中实现滚动条功能是一个常见的问题。这一问题不仅影响到用户体验,而且对性能和开发效率也有极大...

    Flex tree组件数据源、图标等修改

    示例中展示了如何为Tree组件添加滚动条样式、选中项的颜色以及为Tree组件的不同状态(默认、打开、关闭、含有子项等)设置不同的图标。其中,使用了@符号来获取XML节点的属性值,例如:@label表示获取label属性的值...

    flex中渲染器简介

    Flex 渲染器是Flex框架中的一个重要特性,主要用于在列表控件如List、DataGrid、Tree等中定制数据显示。在Flex中,渲染器允许开发者自定义列表中每一项的外观和行为,以此来提高用户体验和视觉吸引力。本系列将深入...

    flex基本控件总结

    2. Text(文本):Text控件也显示不可编辑的文本,但不支持滚动条。与Label类似,Text支持HTML格式,且默认大小适应文本内容,背景透明,无边框。 3. TextInput(文本条):用于用户输入文本,支持change和enter...

    Flex基础培训-3-组件和布局

    当子组件的尺寸超过其父容器时,Flex布局容器可以自动添加滚动条。 6. **支持拖放操作**:DataGrid组件支持将列标题拖拽到新位置,以及通过点击标题完成数据排序。拖放操作增加了用户界面的互动性,允许用户通过...

    《Flex 3 组件实例与应用(2009版)》(PDF)

    HScrollbar是水平滚动条,用于当内容超过容器宽度时,实现水平滚动功能。 #### HSlider HSlider是水平滑动条,用于控制数值范围的选择,常见于音量控制、亮度调节等场景。 #### List List组件用于展示垂直列表,...

    Flex UI组件使用全集

    - **HScrollBar**: 水平滚动条组件。 - **HSlider**: 水平滑动条组件。 - **List**: 显示项目列表的组件。 - **NumericStepper**: 用于数字输入并提供加减操作的组件。 - **ProgressBar**: 进度条组件,常用于显示...

    Flex 3 组件实例与应用(2009版)

    HScrollbar组件实现了水平滚动条的功能,当内容超出容器宽度时可以使用。 ##### 8. **HSlider** HSlider组件提供了水平滑块的功能,适用于设置数值范围内的值。 ##### 9. **List** List组件用于显示列表数据,...

    flex题目大全

    如何使应用去掉水平滚动条而显示垂直滚动条? - **答案**:通过设置`&lt;s:Application&gt;`标签中的`scrollPolicy`属性。 #### 28. 我想创建的视图居中怎么办? - **答案**:使用Flex布局管理器,如`&lt;s:HBox&gt;`或`...

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

    react-tree:React的分层对象树组件

    React树 React的分层对象树组件: 支撑暗(默认值),光的主题,和...空指示器:如果未提供数据,则向用户显示一条消息 加载指示器:提供isLoading道具以指示组件尚未准备就绪 添加到项目 yarn add @naisutech/rea

    滤镜问题-FireFox火狐浏览器与IE的对比分析

    - `*-moz-appearance`: 控制元素的外观,如按钮、滚动条等。 - `*-moz-binding`: 设置XBL绑定。 - `*-moz-background-clip`: 定义背景的裁剪区域。 - `*-moz-background-inline-policy`: 设置背景图片在行内元素...

    Article-view

    9. **自定义滚动条**:在长篇文章中,自定义滚动条样式可以使界面更统一。通过`::-webkit-scrollbar`和`::-webkit-scrollbar-thumb`等伪元素,我们可以调整滚动条的宽度、颜色等。 10. **性能优化**:使用CSS预...

    chatApp

    10. **盒模型调整**:通过设置`box-sizing`属性,可以控制元素的尺寸计算方式,这对于聊天窗口的滚动条、气泡样式等元素的边界和内填充的处理至关重要。 以上就是ChatApp项目中CSS技术的一些核心应用,通过巧妙地...

Global site tag (gtag.js) - Google Analytics