Domanda

Ho un certo numero di etichette in mia applicazione Flex che hanno la proprietà "truncateToFit" su di loro è impostata su true. Il problema è che, invece di visualizzare '...' alla fine di qualsiasi testo troncato viene visualizzato nulla.

vale a dire se il testo di mia etichetta è stata: "Ciao StackOverflow!" Potrei aspettare la mia etichetta di simile a questa:

"Ciao Stackov ..."

Invece si visualizza

"Ciao Stackovnull"

Qualsiasi aiuto sarebbe utile!

Esempio di come dovrebbe apparire il troncamento

Modifica: - Codice di esempio:

<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>
È stato utile?

Soluzione

Ah ah! Ho trovato la soluzione. Siamo spiacenti ragazzi - è stato probabilmente il mio mancanza di informazioni che ha reso difficile per voi ragazzi per eseguire il debug di m :(

Quindi, in ogni caso - si scopre ho avuto uno swf resourceModule esterno che la mia applicazione caricata per essere localizzato dati linguistici, ecc da - Questo file non ha incluso i alcuni dati su ciò che il testo da visualizzare per il troncamento (cioe' .. . '), e quindi è invece visualizzato 'null'. Ho aggiunto che i dati al file SWF di risorse ed è tutto funziona come previsto.

Un milione di Grazie per aver cercato di aiutarmi ragazzi. ;)

Altri suggerimenti

Il problema è che uno dei Flex gruppi di risorse di default non è incluso nei file di localizzazione compilati. Vedi qui per la spiegazione dettagliata e fix: http://deniszgonjanin.posterous.com/flex-truncation-null-error- fissare

Ho appena provato il tuo codice di esempio e ha funzionato bene. Sei sicuro che la sua non è qualcosa d'altro?

Così sono andato e incorporato un carattere di mio e tronca bene senza alcun problema particolare. Io non sono sicuro di come si intende inserire il tipo di carattere, ma questo metodo ha funzionato per me. Se stai facendo qualcosa di completamente diverso, allora si prega di specificare nel tuo post.

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

Se si lavora con più locali, assicuratevi di aggiungere 'it_IT' al vostro localeChain. Per esempio.: resourceManager.localeChain = [ 'pt_BR', 'en_US'];

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

Cercare invio di Leandro

ho avuto una lotta enorme con questo problema oggi (3h), che è il modo troppo per un piccolo problema come questo. In ogni caso, nessuno dei suggerimenti di cui sopra ha risolto il mio problema. Ho provato tutto. Ho finito per fare la mia classe, che estende la classe mx.controls.Label. L'implementazione è al di sotto. Sentitevi liberi di usare nei tuoi progetti. Si prega di notare che è necessario disattivare il truncateToFit nel vostro MXML quando si utilizza questo. Altrimenti la stringa "null" verrà aggiunto al testo e nessun troncamento sarà effettuato.

Codice:

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

    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top