我的Flex应用程序中有许多标签,其上的“truncateToFit”属性设置为true。问题是,不是在任何截断文本的末尾显示“...”,它显示为null。
即如果我的标签文字是:“Hello Stackoverflow!”我可能希望我的标签看起来像这样:
“Hello Stackov ......”
而是显示
“Hello Stackovnull”
任何帮助都会有用!
Example of how truncation should look
编辑: - 示例代码:
<mx:HBox width="200" ... >
<mx:Label maxWidth="150" truncateToFit="true" text="Really long text.Really long text.Really long text.Really long text.Really long text" />
</mx:HBox>
答案 0 :(得分:2)
所以,无论如何 - 事实证明我有一个外部resourceModule swf我的应用程序加载来获取本地化的语言数据等 - 这个文件没有包含有关截断显示什么文本的一些数据(即'.. 。')因此它显示为'null'。我将这些数据添加到资源swf中,并且它们都按预期工作。
感谢一百万人试图帮助我。 ;)
答案 1 :(得分:1)
问题是编译的本地化文件中不包含其中一个默认的Flex资源包。请参阅此处获取详细说明和修复: http://deniszgonjanin.posterous.com/flex-truncation-null-error-fix
答案 2 :(得分:0)
我刚试过你的示例代码,它运行正常。你确定它不是别的吗?
答案 3 :(得分:0)
所以我去嵌入了我自己的字体,并且在没有任何特殊问题的情况下很好地截断了。我不确定你是如何嵌入字体的,但这种方法对我有用。如果您正在做一些完全不同的事情,请在您的帖子中注明。
// Cannot name the font as one that already exists!
[Embed(source="Anonymous.ttf", fontFamily="myAnon")]
private var fontA : Class;
[Embed(source="HGRSGU.TTC", fontFamily="myFont")]
private var fontB : Class;
//...I have some code here that switches the font
var obj : Object = truncateMe.getStyle("fontFamily");
if (obj == "myAnon")
truncateMe.setStyle("fontFamily", "myFont");
else
truncateMe.setStyle("fontFamily", "myAnon");
<!-- My Label -->
<mx:Label maxWidth="150" truncateToFit="true" id="truncateMe"
text="Something really long goes here" fontFamily="myFont" fontSize="20"/>
答案 4 :(得分:0)
如果使用多个区域设置,请确保将“en_US”添加到localeChain。例如。: resourceManager.localeChain = ['pt_BR','en_US'];
找到解决方案寻找Leandro的帖子
答案 5 :(得分:0)
我今天(3h)对这个问题进行了激烈的争论,这对于一个小问题来说太过分了。无论如何,以上提示都没有解决我的问题。我试了一下。我最终做了自己的类,扩展了mx.controls.Label
类。实施如下。随意在您的项目中使用它。请注意,在使用此mxml时,应禁用mxml中的truncateToFit。否则,“null”字符串将附加到您的文本中,不会进行截断。
代码:
package com.feijk.UI {
import mx.controls.Label;
/**
* An extension for mx.controls.Label to truncate the text and show
* a tooltip with the full-length content. This sub-class is meant to be
* used when the regular truncateToFit does result in a "null" appendix
* on the string instead of the "...". In order for this to work, I used
* the following parameters in my mxml:
*
* - truncateToFit = false
* - maxWidth = set
* - width = set
*
*
* @author Tomi Niittumäki // Feijk Industries 2010
* @NOTE: Feel free to use! :)
*/
public class FLabel extends Label{
// define the truncation indicator eg. ...(more) etc.
private const TRUNCATION_INDICATOR:String = new String("...");
/**
* Constructor
*/
public function FLabel(){
super();
}
/**
* The overriding method, which forces the textField to truncate
* its content with the method truncateToFit(truncationIndicator:String)
* and then supers the tooltip to be the original full-length text.
*/
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
//trace("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!: "+textField.text);
textField.truncateToFit(TRUNCATION_INDICATOR);
super.toolTip = text;
}
}
}