Actionscript Flex 3 htmlText计算高度时出错,并删除跨度标记

Actionscript Flex 3 htmlText计算高度时出错,并删除跨度标记,actionscript,flex3,htmltext,Actionscript,Flex3,Htmltext,我目前在Flex 3 htmlText上有两个问题 1) 设置文本的htmlText时: myText.htmlText= 它错误地计算了高度。在大多数情况下,文本的上方和下方都会添加大量的填充(或空白)。我不确定会发生什么,但它计算的文本高度比正常情况下要高 2) 如果我在html中放入标记,它会自动将它们删除(而不是忽略它们)。我正在使用span标记来动态查找文本的某些部分。例如: 亲爱的[名字] 插入到我的htmlText中,我使用它们解析出变量数据的称呼和标记 有人知道这两个问题的解决

我目前在Flex 3 htmlText上有两个问题

1) 设置文本的htmlText时:

myText.htmlText=

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

2) 如果我在html中放入标记,它会自动将它们删除(而不是忽略它们)。我正在使用span标记来动态查找文本的某些部分。例如:

亲爱的[名字]

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

有人知道这两个问题的解决方案吗?关于如何解析html片段,有其他的想法吗?有没有办法改进htmlText?如何正确测量文本高度和/或删除填充

谢谢

  • 在使用任何XML之前添加以下两行:

    XML.ignoreWhitespace = true;
    XML.prettyPrinting = false;
    
    这应该注意文本上方和下方添加的行

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

    <p><span class="test">This is a test.</span></p>
    
  • 如果
    样式表
    属性设置不正确,Flash插件将删除所有HTML标记。因此,在您的情况下,它将删除
    标记,并根据您使用
    defaultTextFormat
    setTextFormat
    指定的任何字体信息,添加自己的

    标记(设置后尝试跟踪htmlText,您会看到)。如果要保留自己的标记,必须将TextField的
    样式表
    属性设置为实际的样式表

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


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

    invalidateSize();
    validateSize();
    

    强制进行大小验证,这有时会有所帮助

    我不确定我是否理解第一部分。如果我有以下代码:If(dataProvider.allowStyles){mainText.htmlText=dataProvider.defaultText;}我将把XML.ignoreWhitespace和另一行放在哪里,它们将如何更改mainText的htmlText?谢谢你的建议!最好将它们放在主类的构造函数中。它们改变了Flash插件处理XML输入的方式:ignoreWhitespace从文本节点中删除前导和尾随空格,预打印在将XML转换为字符串时自动缩进并格式化XML,这在某些情况下会伪造文本输出。我将其添加到默认应用程序文件(Editor.mxml)的initializeHandler中。这并不能解决我遇到的问题:(你能从数据库中发布一个“真实”的xml示例吗?只要结构合适,你就可以用Lorem ipsum替换所有可读文本。
    (newline)
    (newline)
    This is a test.
    (newline)
    (newline)
    
    invalidateSize();
    validateSize();