Flex 4.1 RichText/RichEditableText 自动调整大小

发布于 2024-10-24 20:29:14 字数 863 浏览 4 评论 0原文

过去,我使用 flash.text.textField 对象,如下所示:

tf = textField();
tf.autoWrap = true
tf.autoSize = "left"
tf.width = 100;
tf.text = "Text that is too long to fit in the textfield, so it autowraps, automatically updating the height."
addChild(tf);
someNewObject = new MovieClip();
someNewObject.y = tf.height + 5;
addchild(someNewObject);

这样做会动态地将我的 someNewObject 放置在 textField 的正下方。

我正在尝试找到一个允许我执行此操作的 TLF 组件。

我尝试使用 mc.core.FTETextField。它的大小调整得很好,但不支持 HTML

我尝试使用 Spark TextArea,但显然,设置 heightByLines = NAN 的技术不再有效。

我看到有人说使用 RichEditableText,因为它支持自动调整大小,但我不知道如何操作。

这适用于静态文本。不适用于动态或输入文本。

我正在对此进行编码,因此如果您有一些建议,请以代码形式发布,而不是 MXML。

感谢到目前为止的答案,但 UITextfield 不是 TLF 组件,RichText 的示例不会导致 RichText 高度随文本增长。

我需要的是一个可以设置宽度、添加 TLF 格式文本并在渲染后获取组件高度的组件。就像添加文本时 TextField 所做的那样。

In the past, I used the flash.text.textField object something like this:

tf = textField();
tf.autoWrap = true
tf.autoSize = "left"
tf.width = 100;
tf.text = "Text that is too long to fit in the textfield, so it autowraps, automatically updating the height."
addChild(tf);
someNewObject = new MovieClip();
someNewObject.y = tf.height + 5;
addchild(someNewObject);

Doing this would dynamically place my someNewObject just below the textField.

I'm trying to find a TLF component that allows me to do this.

I tried using mc.core.FTETextField. It resizes great, but does not support HTML

I tried using the Spark TextArea, but apparently, the technique of setting heightByLines = NAN no longer works.

I saw someone say to use RichEditableText, because it supports auto-sizing, but I cannot figure out how.

This is for static text. Not for dynamic or input text.

I'm coding this, so if you have some suggestions, please post them in code, not MXML.

Thanks for the answers so far, but UITextfield is not a TLF component and the example for RichText does not cause the RichText height to grow with the text.

What I need is a component that I can set the width, add TLF formatted text and get the height of the component once it has rendered. Just like a TextField does when you add text.

lee

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风透绣罗衣 2024-10-31 20:29:14

很简单,您只需创建 TextFlow 对象即可。

<fx:Declarations>
<s:TextFlow id="textFlow">
    Hello, this <s:span fontWeight="bold"> is a test</s:span> of TextFlow
</s:TextFlow>
</fx:Declarations>
<s:RichText id="richText" textFlow="{textFlow}" />

但 textFlow 在那里使用 Flex 标签。您始终可以使用转换器将真实的 HTML 字符串转换为 TextFlow,如下所示:

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.ITextImporter;
        import flashx.textLayout.conversion.TextConverter;

        private const importer:ITextImporter = TextConverter.getImporter(TextConverter.TEXT_FIELD_HTML_FORMAT);
        private const htmlString:String = "Hello, this <b>is a test</b> of TextFlow";

    ]]>
</fx:Script>
<s:RichText textFlow="{importer.importToFlow(htmlString)}"/>

Simple enough, you just need to create your TextFlow object.

<fx:Declarations>
<s:TextFlow id="textFlow">
    Hello, this <s:span fontWeight="bold"> is a test</s:span> of TextFlow
</s:TextFlow>
</fx:Declarations>
<s:RichText id="richText" textFlow="{textFlow}" />

But the textFlow uses Flex tags in there. You can always use a converter as well to transform real HTML String into a TextFlow like this:

<fx:Script>
    <![CDATA[
        import flashx.textLayout.conversion.ITextImporter;
        import flashx.textLayout.conversion.TextConverter;

        private const importer:ITextImporter = TextConverter.getImporter(TextConverter.TEXT_FIELD_HTML_FORMAT);
        private const htmlString:String = "Hello, this <b>is a test</b> of TextFlow";

    ]]>
</fx:Script>
<s:RichText textFlow="{importer.importToFlow(htmlString)}"/>
等待我真够勒 2024-10-31 20:29:14

您可以使用mx.core.UITextField。它支持 HTML。以下是文档:http://help。 adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UITextField.html

You can use mx.core.UITextField. It supports HTML. Here is the documentation: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UITextField.html

奢欲 2024-10-31 20:29:14

RichEditableText 可以解决这个问题,但是您必须显式设置自动换行的宽度属性。根据我的经验,如果将宽度设置为 %100,可能会导致一些问题(对我来说会导致一些问题),因此我建议您显式设置宽度值以确保自动换行。 RichEditableText 的 ASDoc 解释了很多。

RichEditableText does the trick, however you must explicitly set width property for autowrapping. From my experience, if you set width to %100, it may cause some problems (for me it causes some), so I recommend you to explicitly set width value to ensure word wrapping. ASDoc of RichEditableText explains quite a bit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文