Flex Tree垂直滚动问题

时间:2011-07-18 06:41:23

标签: flex tree scroll

我正在使用mx:Tree(在Flex 4中),并为每个项目分配了一个自定义的MXTreeItemRenderer。由于TreeItemRenderer包含一个包含tileLayout的列表,这意味着每一行的高度都是可变的。所以我必须将树的“variableRowHeight设置为true。当我测试树时,一切都很顺利。但是当我使用垂直滚动条时,我遇到了一些问题:

  1. 滚动条没有移动到我想要的位置。当我滚动内容时,滚动条有时会​​滚动到不需要的位置(例如树的头部)。当有更多行时,问题就更明显了。

  2. 当我滚动树时,图像一直在轻弹。这意味着,我猜想图像正在重新加载。任何帮助?

  3. 有没有人可以帮我解决问题?许多人:)

2 个答案:

答案 0 :(得分:2)

我发现有用的一种方法是将树包裹在画布中。我在树的滚动时遇到了同样的问题,因为它会做各种各样的时髦事物,但是当你允许画布处理滚动而不是树时,一切都会解决。我选择这个而不是用火花树替换它只是因为它是一个很好的快速修复。

<mx:Canvas height="100%" width="100%" verticalScrollPolicy="on">                                       
     <mx:Tree width="100%" height="100%"                                
     click="click_handler(event);"                                                      
     verticalScrollPolicy="off"                                
     itemRenderer="com.fti.view.itemRenderers.defaultRenderer"
     itemClose="{treeSample.height = treeSample.measureHeightOfItems();}"
     itemOpen="{treeSample.height = treeSample.measureHeightOfItems();}"                                     
     id="treeSample"
 variableRowHeight="true"/> 
</mx:Canvas>

确保并包含那些itemClose和itemOpen属性,以便画布能够准确设置高度并正确滚动。一个警告是,如果你正在使用较大的树木,这可能会有点沉重,影响性能。

答案 1 :(得分:0)

使用SparkTree

http://kachurovskiy.com/2010/spark-tree/

当前树有太多错误。 (最后为Flex 5清理掉了东西):)