33

私は Adob​​e Flex アプリケーションを作成しており、テキスト コントロール (mx:Text) を持っています。これは、複数行の編集不可能なテキストが必要な場合に使用されると思われます (単一行の編集不可能なテキストであるラベルとは対照的に)。ブラウザ ウィンドウのサイズを変更してテキストよりも小さくすると (またはブラウザ ウィンドウが既に小さい状態でロードすると)、テキスト コントロールが折り返されません。私が見つけたこのドキュメントを参照すると、ワードラップ機能は、絶対幅をピクセル単位で指定した場合にのみ発生するようです。それはまさに私が避けようとしているものです。テキストが常に表示されるように、Flash オブジェクトに指定されたサイズ内に収まるようにテキストを折り返す必要があります...不足しているプロパティまたは別のコントロールを使用して、これを達成する方法はありますか? ありがとう。

4

9 に答える 9

25

私はこれと同じ問題を抱えていました。私の場合、mx:Text ブロック (ラップする必要があります) があり、その mx:Text オブジェクトは 2 つの mx:VBox コンテナーに埋め込まれていました。

テキストを正常に折り返す唯一の方法は、次の両方を実行することでした。

  1. ' width="100%" ' プロパティを各 VBox コンテナ (mx:text が存在するコンテナ) に入れます。
  2. ' width="100%" ' プロパティを各 mx:Text オブジェクト (VBox のこのネスト内にある) に入れます。

非常に直感的ではありませんが、これが私にとってはうまくいきました。

これがお役に立てば幸いです。

ジョン・キンスティング

于 2009-03-16T22:21:59.050 に答える
5

パーセンテージの幅と高さは実際には同等のピクセルに解決されるため、それらを使用すると、探しているラッピングと相対的なサイズ設定を実現できます。例えば:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
</mx:Application>

つまり、任意の種類の幅設定がある場合、相対的なサイズ(明示的な数値、パーセンテージ、制約ベースのアンカー(たとえば、上、右、下、左など))により、テキストが自然に折り返されるはずです。 。このアプローチは、使用しているレイアウトでは機能しませんか?コードがないとわかりにくいですが、その通りです。ラッピングでは、コンテナに幅関連のプロパティを設定する必要があります。

ただし、コンテキストによっては、サイズ変更と折り返しが少し難しい場合があるため、これが機能しない場合は、コードを投稿してみてください。私たちの1人がそれを理解するのを手伝ってくれると確信しています。

于 2009-02-11T19:10:19.910 に答える
4

MXML コンポーネント内でテキストの折り返しを機能させたい場合は、次のようにしてください。

<mx:Text id="testText"  
  width="{ this.width }"
  height="100%"   
  text="Your text here" />

基本的に幅をコンポーネントの幅に設定しており、高さを 100% に設定すると、サイズを縮小したときに正しく折り返すことができます。

于 2010-02-11T17:57:24.420 に答える
0

VBox width = "100%" と Text width = "100%" を適用するのが最も簡単な方法だと思います。注: テキストが動的に生成される場合は、忘れずに text.percentWidth = 100 にしてください。

于 2009-10-23T23:05:46.687 に答える
0

の親ノードにイベント ハンドラを追加してEvent.RESIZE、Text オブジェクトのvalidateNow()メソッドを呼び出すことができます。(おそらく呼び出しが先行しinvalidateSize()ます。)なぜこれが自動的に起こらないのか、私にはわかりません。

于 2009-02-11T18:52:55.850 に答える
0

したがって、Christian の Text 要素を含むアプリケーションの例は機能しますが、レイアウトを台無しにするのは簡単すぎます。間に VBox を 1 つ追加するだけでは、ラッピングは機能しませ

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="100%" height="100%">
<mx:VBox width="100%">
    <mx:Text width="100%" height="100%" text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.  Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />    
</mx:VBox>
</mx:Application>
于 2009-11-06T21:48:33.493 に答える
-1

テキスト フィールドに htmlText="true" を設定してみてください。

于 2011-04-27T20:28:25.890 に答える
-2

mxmlだけを使用してそれを行うことができました。結果はかなり醜いですが、私はそれを行うことができました。

<s:Group id="propDisplay" width="100%">
    <mx:Text id="key" left="0" text="{data.key}:"/>
    <mx:Text left="{key.width}" maxWidth="{propDisplay.width - key.width}" 
                             text="{data.value}" />
</s:Group>
于 2011-03-11T10:19:07.300 に答える
-5
render="invalidateSize();validateNow();
'component id'.mx_internal::getTextField().wordWrap=true"

これをテキスト コンポーネントに追加します。

于 2010-01-07T05:52:01.617 に答える