我目前在使用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和/或删除填充?
谢谢!
答案 0 :(得分:1)
基本上,标签需要明确设置宽度和高度,以便flex在这些元素上正确计算高度。此外,您可以使用:
invalidateSize();
validateSize();
强制进行尺寸验证,这有时会有所帮助!
答案 1 :(得分:0)
在使用任何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)
如果未正确设置styleSheet
属性,Flash插件将删除所有HTML标记。因此,在您的情况下,根据您使用<span>
或{指定的任何字体信息,它会删除<P>
代码并添加自己的<FONT>
和defaultTextFormat
代码{1}}(尝试在设置后跟踪htmlText - 你会看到)。如果要保留自己的标记,则必须将TextField的setTextFormat
属性设置为实际的StyleSheet。
使用HTML标记解析所需信息是一种有效的方法。我通常使用编号占位符(如{0}和styleSheet
)来插入动态值。