2011-03-11 1 views
1

Je crée le composant Label comme celui-ciComment faire en sorte que Flex Spark Label soit redimensionné automatiquement?

var label:Label = new Label(); 
label.text = "some text"; 
label.styleName = "someStyle"; 
addChild(label); 

Mais rester invisible jusqu'à ce que je explicite la série largeur et la hauteur.
Comment puis-je redimensionner automatiquement l'étiquette en fonction de son texte?

+0

Redimensionné comment? Voulez-vous qu'il s'enroule sur une deuxième ligne? Gardez tout sur une seule ligne? –

+0

Disons une seule ligne – GetUsername

Répondre

4

que j'ai trouvé la réponse à ma question here
fonction de l'étiquette

var lineMetrics:TextLineMetrics = label.measureText(label.text); 
label.width = lineMetrics.width; 
label.height = lineMetrics.height; 
+0

cela ne fonctionne pas pour les composants Spark ... – Dan

+0

Fonctionne avec mes étiquettes Spark. – Mario

1

Vous devriez pouvoir utiliser label.percentWidth = 100; pour permettre à l'étiquette de grandir automatiquement avec le texte. Si vous souhaitez qu'il reste sur une seule ligne, vous devez également définir la propriété maxDisplayedLines = 1;. Vous pouvez également utiliser addElement(label) au lieu de addChild(label).

+0

Cela ne fonctionne pas, l'étiquette reste invisible. En outre, comment régler la largeur du composant à 100% le redimensionne-t-il automatiquement? – GetUsername

+0

Il ne le redimensionne pas automatiquement, mais définit la largeur de l'étiquette sur la largeur de son conteneur. Cela pourrait nous aider si nous pouvions voir un peu plus de votre code. Vous pouvez également essayer d'appeler 'label.validateNow()' après avoir ajouté l'étiquette au conteneur. –

3

La solution est d'appeler un measureText() J'ai aussi remarqué que la réponse ci-dessus ne semble pas fonctionner avec des composants d'étincelles. Cela fonctionne cependant pour moi.

label.width = label.measuredWidth; label.height = label.measuredHeight;

Questions connexes