标签组件上的Flex / Actionscript truncateToFit

时间:2009-04-14 10:04:02

标签: flex actionscript label truncation

我的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>

6 个答案:

答案 0 :(得分:2)

哈哈!我找到了解决方案。对不起伙计们 - 可能是我缺乏信息让你们很难调试m :(

所以,无论如何 - 事实证明我有一个外部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'];

http://blog.flexexamples.com/2008/01/26/truncating-text-in-the-flex-label-control-using-the-truncatetofit-property/

找到解决方案

寻找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;
        }

    }
}