7

私はこの件について多くの検索を行ってきましたが、私が見つけたものは時代遅れであるか、機能していないようです.

これまでの TextField では、TextField を特定の幅に設定し、wordWrap を true に設定すると、追加したテキストに応じて高さが変わるテキスト フィールドになってしまいました。

今、Spark TextArea または RichText のいずれかでこれを実行しようとしています。

この HeightInLines = NAN を試しましたが、時代遅れのようです。

私もこのルーチンを試しました:

var totalHeight:uint = 10;
this.validateNow();
var noOfLines:int = this.mx_internal::getTextField().numLines;
for (var i:int = 0; i < noOfLines; i++) 
{
     var textLineHeight:int = 
                     this.mx_internal::getTextField().getLineMetrics(i).height;
     totalHeight += textLineHeight;
}
this.height = totalHeight;

ただし、mx_internal は Spark コンポーネントにはありません。

MXMLではなくAS3でこれをやろうとしています。AS3 を使用してこれを理解するのに役立つ提案やリンクがあれば、本当に感謝しています。

4

7 に答える 7

3

午後中ずっとこれに苦労していました。ただし、幅を設定して高さを未定義のままにすると、RichEditableText コンポーネントは自動サイズ設定されるようです。

于 2011-10-26T22:03:17.837 に答える
2

これはうまくいきます:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <s:TextArea updateComplete="event.currentTarget.heightInLines = NaN" />
</s:Application>

ここのコメントにあります。同じupdateCompleteイベントを使用して、ActionScript でも同じことができます。

于 2011-04-15T18:22:56.813 に答える
1

これは、ItemRenderer内で使用する場合(リストコンポーネントなど)にTextAreaの高さをコンテンツに合わせて設定する方法です。

private function onUpdateComplete( e: Event ): void
{
    // autoresize the text area
    if ( theText ) {
      var actualNumOfLines: int = theText.textFlow.flowComposer.numLines;
      theText.heightInLines = actualNumOfLines; 

      invalidateSize();
    }
}

ItemRendererには、次のプロパティを設定する必要があります。

<s:ItemRenderer ... updateComplete="onUpdateComplete(event)>

たぶん、updateCompleteイベントは、自動サイズ変更アクションの最適なトリガーではありませんが、私にとっては正常に機能します。

于 2012-02-08T20:26:45.087 に答える
1

TextArea のスキンからスクローラーを削除すると、自動サイズ変更可能になります。完成したスキンはこちらからダウンロードできます: http://www.yumasoft.com/node/126

于 2012-04-09T07:31:20.493 に答える
0

Spark テキスト エリアのソリューションを次に示します (mx テキスト エリアと同じように機能します)。

var ta_height:int;
for(var i:int=0; i < StyleableTextField(myTextArea.textDisplay).numLines; i++) {
        ta_height += StyleableTextField(myTextArea.textDisplay).getLineMetrics(i).height;
}
myTextArea.height = ta_height;
于 2012-05-21T09:36:25.133 に答える
-1

その s:TextArea で同じヘッドバンギングを行っていて、これで仕事が完了することがわかりました。

<s:RichEditableText id="txtArea" left="0" right="0" backgroundColor="#F7F2F2"
                    change="textChanged()" />
于 2011-12-28T13:52:37.830 に答える