Flex アプリケーションの外部でリッチ テキスト エディターを介して生成された HTML があり、それを Flex 内で表示したいと考えています。
HTML は単純な HTML タグ、スタイル、アンカー、場合によってはイメージ タグなどです。この HTML を flex でレンダリングできるコントロールはありますか?
任意のアイデアをいただければ幸いです...ありがとう。
Flex アプリケーションの外部でリッチ テキスト エディターを介して生成された HTML があり、それを Flex 内で表示したいと考えています。
HTML は単純な HTML タグ、スタイル、アンカー、場合によってはイメージ タグなどです。この HTML を flex でレンダリングできるコントロールはありますか?
任意のアイデアをいただければ幸いです...ありがとう。
HTML が非常に単純な場合は、通常のラベルまたはテキストエリア コンポーネントで表示できます。より複雑な場合は、この質問で回答した内容を引用します。そこでの議論にももう少し情報があります。
複雑な HTML と Javascript の場合、可能な方法の 1 つはHTMLComponentです。これは、フラッシュ上で iframe を使用して、HTML がアプリ内にあるように見せるメソッドです。ただし、この方法にはいくつかの欠点があります。そのほとんどはDeitte.comで詳しく説明されています。
これがオフラインで移動できる場合は、Air を使用できます (mx:HTML コンポーネントが組み込まれています)。Deitte.comにも、この手法の詳細が掲載されています。
flexiFrameコントロールを使用する必要があります。これは100%フラッシュソリューションではなく、少しのjs呼び出しを組み合わせていますが、私にとっては完璧に機能します。
githubhttps://github.com/flex-users/flex-iframeから最新のソースコードを入手できます
これは、コンポーネントの作成者からのサンプルコードです。
<!---
A basic example application showing how to embed a local html page in a Flex application.
@author Alistair Rutherford
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:flexiframe="http://code.google.com/p/flex-iframe/"
horizontalAlign="center"
verticalAlign="middle"
viewSourceURL="srcview/index.html">
<!-- Example project presentation -->
<mx:ApplicationControlBar dock="true">
<mx:Text selectable="false">
<mx:htmlText><![CDATA[<font color="#000000" size="12"><b>flex-iframe - Simple html example</b><br>This example shows how to embed a simple Html page in a Flex application.</font>]]></mx:htmlText>
</mx:Text>
</mx:ApplicationControlBar>
<!-- HTML content stored in a String -->
<mx:String id="iFrameHTMLContent">
<![CDATA[
<html>
<head>
<title>About</title>
</head>
<body>
<div>About</div>
<p>Simple HTML Test application. This test app loads a page of html locally.</p>
<div>Credits</div>
<p> </p>
<p>IFrame.as is based on the work of</p>
<ul>
<li><a href="http://coenraets.org/" target="_top">Christophe Coenraets</a></li>
<li><a href="http://www.deitte.com/" target="_top">Brian Deitte</a></li>
</ul>
</body>
</html>
]]>
</mx:String>
<!-- Example using the 'source' property -->
<mx:Panel title="A simple Html page embedded with the 'source' property"
width="80%"
height="80%">
<flexiframe:IFrame id="iFrameBySource"
width="100%"
height="100%"
source="about.html"/>
</mx:Panel>
<!-- Example using the 'content' property -->
<mx:Panel title="A simple Html page embedded with the 'content' property"
width="80%"
height="80%">
<flexiframe:IFrame id="iFrameByContent"
width="100%"
height="100%"
content="{iFrameHTMLContent}"/>
</mx:Panel>
</mx:Application>
mx.controls.Label
andのドキュメントを確認してください(これは、またはFlex のコントロールにflash.text.TextField
テキストを表示するものです)。ドキュメントには、Text
Label
TextField
<img> タグを使用すると、外部の画像ファイル (JPEG、GIF、PNG)、SWF ファイル、およびムービー クリップをテキスト フィールド内に埋め込むことができます。テキスト フィールドに埋め込んだ画像の周囲にテキストが自動的に流れます。このタグを使用するには、テキスト フィールドを複数行に設定し、テキストを折り返す必要があります。
つまり、そのプロパティをタグを含む HTML にText
設定することで、Flex のコンポーネントに画像を表示できます。は複数行ではないため使用できません。htmlText
<img>
Label
テキスト フィールドに表示される画像が、その周囲に流れるテキストと左または右に揃えられている場合、テキスト フィールドの高さを適切に測定するのに問題があることに気付きました (例: align="left"
)。位置合わせされた画像を使用する予定がある場合は、それに対抗するために下に余分なスペースを追加する必要がある場合があります。
@mmattax
実際、TextArea コンポーネントに画像を表示できます。アプローチは完全に問題がないわけではありませんが...