2010-07-23 28 views
0

使用默认TreeItemrenderer,可以通过在树控件中设置wordWrap=truevariableRowHeight="true",根据树宽启用自动换行。柔性树中MXTreeItemRenderer自动换行的高度问题

我想在MXTreeItemRenderer(使用spark组件作为mx itemrenderer的包装器)中启用此行为。 我使用了由Flexbuilder创建的MXTreeItemRenderer,并向标签组件添加了100%的宽度(请参阅下面的代码)。

单词换行现在正在工作,但在许多情况下,当换行符存在时,项目渲染器高度的计算错误。它似乎以固定的宽度工作。

任何想法如何得到这个权利?

<s:MXTreeItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"> 

    <s:states> 
     <s:State name="normal" />    
     <s:State name="hovered" /> 
     <s:State name="selected" /> 
    </s:states> 
    <s:HGroup left="0" right="0" top="0" bottom="0" verticalAlign="middle"> 
     <s:Rect id="indentationSpacer" width="{treeListData.indent}" percentHeight="100" alpha="0"> 
      <s:fill> 
       <s:SolidColor color="0xFFFFFF" /> 
      </s:fill> 
     </s:Rect> 
     <s:Group id="disclosureGroup"> 
      <s:BitmapImage source="{treeListData.disclosureIcon}" visible="{treeListData.hasChildren}" /> 
     </s:Group> 
     <s:BitmapImage source="{treeListData.icon}" /> 
     <s:Label id="labelField" text="{treeListData.label}" paddingTop="2" width="100%"/> 
    </s:HGroup> 
</s:MXTreeItemRenderer> 

回答

0

那么你或许应该提交Bug第一关;)

如果它不能正确报告的高度,覆盖措施(..)方法,并制定出自己的高度,你可能有使用线条指标(如果它们仍在Spark中)来解决问题。

+0

谢谢,我会研究一下。 – baumratte 2010-08-03 07:59:13

0

我发现当两次完成时高度计算正确。 因此,作为一种解决方法,我现在聆听数据和大小的变化,并在变更时调用invalidateList()树的方法。

0

在这个博客网站,有人向我指出这个site

非常好的一个,它帮助我。我认为它适用于不同的行高。包装文本的节点应该可以工作。

享受!