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

随心笔谈3个月前发布 admin
181 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了名为`AutoSizeTree`的Java类,它继承自`mx.controls.Tree`,并为树状结构的水平滚动提供了自适应布局的支持。该类通过计算显示条目之间的间距,并根据当前屏幕宽度调整滚动条的位置,以确保良好的用户体验。`AutoSizeTree`实现了`maxHorizontalScrollPosition`方法,该方法通过内部变量`mx_internal::_maxHorizontalScrollPosition`来控制滚动条的位置变化,同时通过事件机制通知相关组件。此外,该类还通过`updateDisplayList`方法动态更新显示列表,确保滚动行为与显示内容的一致性。总体而言,`AutoSizeTree`有效地解决了树状结构在不同屏幕尺寸下自动调整滚动的问题。

package com.anydata.consumer.components

{

import flash.events.Event;

import mx.controls.Tree;

import mx.core.ScrollPolicy;

import mx.core.mx_internal;

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

}

}

}

© 版权声明

相关文章