Pregunta

Tengo una serie de etiquetas en mi aplicación Flex que tienen la propiedad "truncatetOfit" establecida en el verdadero. El problema es que, en lugar de mostrar '...' al final de cualquier texto truncado que muestra nulo.

Es decir, si el texto de mi etiqueta era: "¡Hola StackOverflow!" Podría esperar que mi etiqueta se vea así:

"Hola Stackov ..."

En su lugar se muestra

"Hola Stackovnull"

¡Cualquier ayuda sería útil!

Ejemplo de cómo debe verse el truncamiento

Editar: - Código de ejemplo:

<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>
¿Fue útil?

Solución

¡Jaja! Encontré la solución. Lo siento chicos, probablemente fue mi falta de información lo que dificultó para ustedes depurar para M :(

Entonces, de todos modos, resulta que tenía un SWF de recursos externos que mi aplicación cargó para obtener datos de idioma localizados, etc., este archivo no incluía algunos datos sobre qué texto mostrar para el truncamiento (es decir, '...') Y entonces, en su lugar se mostró 'nulo'. Agregué esos datos al recurso SWF y todo funciona como se esperaba.

Gracias un millón por tratar de ayudarme a chicos. ;)

Otros consejos

El problema es que uno de los paquetes de recursos flexibles predeterminados no está incluido en sus archivos de localización compilados. Vea aquí para obtener la explicación detallada y la solución:http://deniszgoninin.posterous.com/flex-truncation-null-error-fix

Acabo de probar su código de ejemplo y funcionó bien. ¿Estás seguro de que no es otra cosa?

Así que fui e incrusté una fuente propia y truncé bien sin ningún problema en particular. No estoy seguro de cómo está incrustando su fuente, pero este método funcionó para mí. Si está haciendo algo completamente diferente, especifique en su publicación.

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

Si trabaja con múltiples locales, asegúrese de agregar 'EN_US' a su localchain. Por ejemplo: ResourceManager.LocalElain = ['PT_BR', 'EN_US'];

Solución encontrada en: http://blog.flexexamples.com/2008/01/26/truncating-text-in-the-flex--control-using-the-truncatetofit-property/

Busque la publicación de Leandro

Hoy tuve una gran pelea con este problema (3H), que es demasiado para un pequeño problema como este. De todos modos, ninguno de los consejos anteriores resolvió mi problema. Lo probé todo. Terminé haciendo mi propia clase, que extiende el mx.controls.Label clase. La implementación está a continuación. Siéntase libre de usarlo en sus proyectos. Tenga en cuenta que debe deshabilitar el truncatetOfit en su mxml cuando use este. De lo contrario, la cadena "nulo" se agregará a su texto y no se realizará truncamiento.

Código:

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

    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top