2008-10-12 6 views
1

Voici un problème que je continue à courir dans:Flex - Mise en forme du texte dans une toile

J'ai beaucoup de situations où je dois afficher un texte avec un conteneur de style comme ceci:

<mx:Canvas> 
    <mx:Text text="{text}" left="5" verticalCenter="0" right="5" />  
</mx:Canvas> 

Comme vous pouvez le voir, le texte est contraint par les marges gauche et droite de la toile et je n'ai pas spécifié de hauteur pour le contrôle de texte car je veux qu'il croisse verticalement lorsque j'ajoute du texte dessus. Raison étant - s'il y a une ligne de texte que je veux l'afficher au centre de la toile mais s'il y a deux ou trois lignes de texte je veux que le contrôle de texte montre ces deux ou trois lignes de texte. Cependant, ce qui continue à se produire, c'est qu'il n'affiche qu'une seule ligne de texte - quel que soit le nombre de fois que j'appelle invalidateSize() sur lui ou le conteneur. Que fais-je?

CAVEAT: La hauteur de la toile et la largeur est fixée par le composant qui instancie (tout cela est enveloppé dans un composant personnalisé) donc je ne peux pas définir explicitement la largeur ou la hauteur du contrôle de texte ...

NOTE: D'accord, c'est peut-être une solution facile, car en tapant cette question, je l'ai compris - mais, voici une chance de répondre à une question facile !?

Répondre

2

Le composant Texte a besoin d'une largeur si vous souhaitez qu'il s'enroule automatiquement pour vous. Si vous avez utilisé une chaîne avec des retours à la ligne, cela fonctionnera comme prévu sans largeur. Pour vous, utilisez:

Editer: Ok, vous le voulez centré dans une toile de taille variable. Ensuite, vous pouvez:

<mx:HBox 
    width="500" 
    paddingLeft="5" 
    paddingRight="5"> 
    <mx:Spacer width="100%" /> 
    <mx:Text 
     width="100%" 
     text="{text}" /> 
    <mx:Spacer width="100%" /> 
</mx:HBox> 
+0

J'éclairci la question un peu plus mais je ne sais pas ce que la largeur de la toile qui est le rôle parental, le texte sera - et il change: P – onekidney

+0

rétablissez alors 100% et texteAlignez-le au centre. –

1

Jetez un coup d'œil au composant TextArea.