是否有在 Flex 3 中显示多行文本的解决方法?到目前为止,我尝试过的两个控件是 mx:Text 和 mx:TextArea。每个控件都有自己的与之关联的错误。供引用:mx:Text bug - http://bugs.adobe.com/jira/browse/SDK-9819 mx:TextArea 错误 - http://bugs.adobe.com/jira/browse/SDK-12616 .基本上,如果您未指定高度并且文本换行到下一行(高度由 Flex 根据换行动态确定),则两个控件都无法正确处理滚动。有人有可能有用的解决方法吗?
谢谢。
更新:我过去尝试过的一种方法是手动计算 mx:Text 元素的高度。我可以使用以下方法做到这一点:
var textItem:Text = new Text();
var len:int = value.length;
var lines:int = int(len/115) + 1;
var height:int = lines * 20;
textItem.height = height;
虽然这似乎解决了 mx:Text 中的问题,但存在一个大错误。计算在很大程度上依赖于字体大小、字母间距和 textItem 的宽度。我可以使用这种方法,继续我的项目。然而,对此进行维护是不可避免的,并且使用这样的代码,它将是一个巨大的 PITA。
最佳答案
我自己也曾多次处理过这个问题。我发现获得 <mx:Text>
动态高度调整的最佳方法是将高度保留在文本之外,然后在封闭的 VBox、HBox 等上指定 100% 的百分比高度。类似以下的内容应该适合您:
<mx:VBox width="100%" height="100%">
<mx:Text text="Your really long text goes here." width="100%"/>
</mx:VBox>
由于这本身就是一个 hack,您的里程数可能会有所不同。
编辑
如果您想扩展上面的示例以便更轻松地维护代码,您应该查看 TextLineMetrics 类。这将允许您测量文本的宽度和高度,同时考虑字体、大小等。可以找到 TextLineMetrics 的文档 here .要使用上面的示例,您需要执行以下操作:
var textItem:Text = new Text();
var metrics:TextLineMetrics = textItem.measureText( value );
var len:int = metrics.width;
var lines:int = int(len/textItem.width) + 1;
var height:int = lines * metrics.height;
textItem.height = height;
关于apache-flex - 是否有针对 Flex 的多行文本解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358826/