Flex 3 htmlText计算高度错误并剥离span标签

时间:2011-01-11 22:13:29

标签: actionscript flex3 htmltext

我目前在使用Flex 3 htmlText时遇到两个问题。

1)当我设置文本的htmlText时:

myText.htmlText =< html文本存储在我的mysql数据库中>

它计算错误的高度方式。在大多数情况下,在文本的上方和下方添加了大量填充(或空格)。我不确定会发生什么,但它会计算textHeight比正常情况更高的方式。

2)如果我把< span>在我的HTML中的标签,它会自动剥离它们(而不是忽略它们)。我使用span标签能够动态查找我的文本的某些部分。例如:

< span class =“salutation”>亲爱的,< / span> < span class =“tag”> [名字]< / span>

插入到我的htmlText中,我用它们来解析我的变量数据的称呼和标记。

有谁知道这两个问题的解决方案?关于如何解析html片段的任何其他想法?有什么方法可以改进htmlText吗?如何正确测量textHeight和/或删除填充?

谢谢!

2 个答案:

答案 0 :(得分:1)

基本上,标签需要明确设置宽度和高度,以便flex在这些元素上正确计算高度。此外,您可以使用:

invalidateSize();
validateSize();

强制进行尺寸验证,这有时会有所帮助!

答案 1 :(得分:0)

  1. 在使用任何XML之前添加这两行:

    XML.ignoreWhitespace = true;
    XML.prettyPrinting = false;
    

    这应该处理文本上方和下方添加的行。

    ignoreWhitespace从文本节点中删除前导和尾随空格 prettyPrinting,设置为true时,格式化XML输出,缩进节点并添加换行符以使其更具可读性 - 但也会影响文本输出。例如,当你有这样的结构时:

    <p><span class="test">This is a test.</span></p>
    

    Flash将输出:

    <p>
        <span class="test">
            This is a test.
        </span>
    </p>
    

    这会导致您的TextField显示:

    (newline)
    (newline)
    This is a test.
    (newline)
    (newline)
    
  2. 如果未正确设置styleSheet属性,Flash插件将删除所有HTML标记。因此,在您的情况下,根据您使用<span>或{指定的任何字体信息,它会删除<P>代码并添加自己的<FONT>defaultTextFormat代码{1}}(尝试在设置后跟踪htmlText - 你会看到)。如果要保留自己的标记,则必须将TextField的setTextFormat属性设置为实际的StyleSheet。

  3. 使用HTML标记解析所需信息是一种有效的方法。我通常使用编号占位符(如{0}和styleSheet)来插入动态值。