0

デフォルトの TreeItemrenderer を使用すると、ツリー コントロールでwordWrap=trueおよびを設定することにより、ツリーの幅に応じて自動ワード ラッピングを有効にすることができます。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

2回やると高さが正しく計算されることがわかりました。したがって、今のところ回避策として、データとサイズの変更をリッスンし、変更時invalidateList()にツリーのメソッドを呼び出します。

于 2010-08-03T08:14:16.030 に答える
0

おそらく最初にバグを報告する必要があります ;)

高さが正しく報告されていない場合は、measure(..) メソッドをオーバーライドして、自分で高さを計算します。おそらく、ライン メトリックを使用して (Spark に残っている場合)、それを計算する必要があります。

于 2010-07-26T09:48:18.200 に答える
0

このブログ サイトでは、誰かが私にこのサイトを教えてくれました

本当にいいものです、助かりました。行の高さを変えてもうまくいくと思います。折り返しテキストを含むノードは機能するはずです。

楽しみ!

于 2010-09-09T20:47:37.833 に答える