0

wordWrap=true使用默认的 TreeItemrenderer,可以通过设置和variableRowHeight="true"在树控件中根据树的宽度启用自动换行。

我想在 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>
4

3 回答 3

0

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

于 2010-08-03T08:14:16.030 回答
0

在这个博客站点中,有人将我指向这个站点

真的很好,它帮助了我。我认为它适用于不同的行高。带有换行文本的节点应该可以工作。

享受!

于 2010-09-09T20:47:37.833 回答
0

好吧,您可能应该首先提交一个错误;)

如果它没有正确报告高度,请覆盖 measure(..) 方法并自己计算高度,您可能必须使用线度量(如果它们仍在 Spark 中)来计算它。

于 2010-07-26T09:48:18.200 回答