2009-04-14 5 views
0

Ich habe eine Reihe von Labels in meiner Flex-Anwendung, bei denen die Eigenschaft "truncateToFit" auf true gesetzt ist. Das Problem besteht darin, dass anstelle von "..." am Ende eines abgeschnittenen Textes Null angezeigt wird.Flex/Actionscript truncateToFit auf der Label-Komponente

Wenn der Text meines Labels lautet: "Hallo Stackoverflow!" Ich könnte mein Label zu sehen wie folgt erwartet:

"Hallo Stackov ..."

Stattdessen zeigt es

"Hallo Stackovnull"

Jede Hilfe wäre nützlich!

Example of how truncation should look

Edit: - Beispielcode:

<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

Bitte fügen Sie Quellcode genau so wie es ist (dies sieht einer von denen durch einen Fehler aus). Ist der Text des Labels eine Verkettung zweier Strings? Hast du auch "maxWidth" eingestellt? – dirkgently

+0

Code hinzugefügt - Ich bin mir ziemlich sicher, dass es nichts mit meinem Code zu tun hat. Es scheint vielleicht ein Config Problem zu sein? –

+0

Funktioniert der angegebene Beispielcode nicht auf Ihrer Seite? Eine direkte Kopie des obigen Codes funktioniert genau so, wie es sollte. Vielleicht erweitern Sie Ihr spezielles Szenario mehr? – nevets1219

Antwort

2

Ha ha! Ich habe die Lösung gefunden. Es tut mir leid Jungs - Es war wahrscheinlich mein Mangel an Informationen, die es schwer gemacht für Sie debuggen für m :(

Also, wie auch immer - Es stellte sich heraus, ich hatte eine externe resourceModule swf, die meine Anwendung geladen, um lokalisierte Sprachdaten erhalten etc von - Diese Datei enthielt nicht einige Daten darüber, welcher Text für die Kürzung angezeigt werden soll (dh '...'), und stattdessen wurde 'null' angezeigt. Ich fügte diese Daten dem Ressource swf hinzu und alles funktioniert wie erwartet .

eine Million

Dank für den Versuch, mich Jungs zu helfen;.)

0

Ich habe gerade versucht, Ihrem Beispiel-Code und es funktionierte gut. Bist du sicher, dass es nicht etwas anderes ist?

0

Also ging ich und eingebettet eine eigene Schriftart und es schneidet nett ohne ein bestimmtes Problem. Ich bin mir nicht sicher, wie Sie Ihre Schriftart einbetten, aber diese Methode hat für mich funktioniert. Wenn Sie etwas völlig anderes machen, dann geben Sie dies bitte in Ihrem Beitrag an.

// 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"/> 
+0

Vielen Dank für das Testen. Ich frage mich, ob es etwas mit der bestimmten Schriftart zu tun hat, die ich benutze? Obwohl ich weiß, dass es einen Voll-Stopp-Charakter hat: s –

+0

Wenn es Ihnen nichts ausmacht, die Schriftart zu teilen, können andere versuchen herauszufinden, ob das Problem für Ihr Ende spezifisch ist oder nicht, aber ich weiß sicher, dass diese Methode funktioniert mit diesen zwei Schriftarten, die ich benutze). Sie können das Problem wahrscheinlich umgehen, indem Sie das Verhalten in (ich denke) manuell codieren. – nevets1219

0

ich mit diesem Thema heute (3h) einen großen Kampf hatte, die für ein kleines Problem, da dies viel zu viel ist. Wie auch immer, keine der obigen Tipps hat mein Problem gelöst. Ich habe alles versucht. Ich habe meine eigene Klasse gemacht, die die mx.controls.Label Klasse erweitert. Die Implementierung ist unten. Fühlen Sie sich frei, es in Ihren Projekten zu verwenden. Bitte beachten Sie, dass Sie das truncateToFit in Ihrem mxml deaktivieren sollten, wenn Sie dieses verwenden. Andernfalls wird der "Null" -String an Ihren Text angehängt und es wird keine Kürzung vorgenommen.

Code:

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

    } 
} 
Verwandte Themen