当文本大到文本框时弹性...变小

时间:2009-04-06 17:17:15

标签: flex

我有一个< mx:标签>具有设置宽度的标记,通常大到足以显示需要显示的文本。每隔一段时间虽然文字有点太长而被切断,“......”会被追加。而不是发生这种情况,我想减小字体大小,只显示整个文本。

有没有人知道这样做的好方法?

由于

2 个答案:

答案 0 :(得分:1)

字体是一个复杂的野兽。对于给定的文本,您可以使用以下近似公式非常简单地找到字符串长度并计算最大允许字体大小:

var max_allowable_size:int = yourLabel.width / yourLabel.text.length;

这可能会导致某些字体出现严重问题,即:

  • 请记住,并非所有字体都相同,即它们不能优雅地调整大小。
  • 抗锯齿可能会中断
  • 字体可能看起来不太好/文字可能难以辨认
  • 以上天真的公式在应用于非罗马字符时可能会中断
  • 此外,这是一种效率低下的方式。

我宁愿建议您定义两种不同的样式,一种是常规样式,另一种是字体大小设置为最小值的后备样式,当您遇到较长的标签文本时,可以切换到这种样式。您可以使用上述公式中的默认字体大小来计算要切换的阈值限制。当然,如果你必须支持本地化/多种语言,那么就要进行一些实验。

最后,如果要使用除最常见字体以外的任何其他内容,请始终嵌入字体。

答案 1 :(得分:1)