2009-01-20 5 views
2

Dans mon application Flex3, j'ai des fenêtres flottantes qui contiennent des quantités variables de texte. Les fenêtres sont destinées à être redimensionnables par l'utilisateur. Actuellement, bien que je puisse redimensionner les fenêtres correctement, je ne peux pas obtenir le texte dans un TextArea dans la fenêtre pour redistribuer lorsque la fenêtre est redimensionnée. J'ai trouvé des publications de blog qu'il y a un bug de taille dans TextArea qui signifie que le réglage du contenu du texte ne redimensionne pas le TextArea correctement, ainsi que des solutions de contournement suggérées. Dans mon cas, le contenu reste le même mais la géométrie du conteneur change. Ce qui semble se produire est que TextArea adopte une taille fixe lors de son premier rendu, et aucune quantité de redimensionnement du conteneur ne change cela. Quelqu'un peut-il suggérer un moyen de créer une zone de texte fluide dans Flex?Mise en page fluide du texte dans Flex3

Ian

+0

S'il vous plaît poster une partie de votre code. Cela pourrait aider à comprendre ce qui se passe exactement dans votre application. Le framework Flex est parfois un peu trop complexe et il est facile de mettre quelque chose en erreur quelque part. – thgie

+0

Comment redimensionnez-vous les fenêtres? Utilisez-vous du code personnalisé pour cela? Avez-vous du code qui étend les dimensions de TextArea? Si possible, vous pouvez publier un exemple de code afin que nous puissions vous aider à trouver le problème. J'ai juste essayé de redimensionner un TextArea dans une application et cela semble fonctionner. –

Répondre

0

En liant la largeur de textArea à son conteneur, vous pouvez conserver les marges et les bordures et ne pas avoir à gérer les pourcentages.
De plus, votre textArea sera redimensionnée chaque fois que sa taille de parent change.
Je pense à quelque chose comme ceci:

<fx:Script> 
    <![CDATA[ 
     import spark.layouts.supportClasses.LayoutBase; 

     protected function onButtonClicked(event:MouseEvent):void 
     { 
      currentState = (event.target.selected ? 'largeState' : 'smallState'); 
     } 

    ]]> 
</fx:Script> 
<s:TitleWindow id="window" width="300" height="200"> 
    <s:TextArea width="{window.width - 10}" height="{window.height - 60}" 
     text="{IMyConsts.LOREMIPSUM}" borderVisible="false" /> 
    <s:ToggleButton id="btnEffect" bottom="5" click="onButtonClicked(event)" 
     label="{btnEffect.selected ? 'Go smaller' : 'Go larger'}" /> 
</s:TitleWindow> 
<s:states> 
    <s:State name="smallState" /> 
    <s:State name="largeState" /> 
</s:states> 
<s:transitions> 
    <s:Transition fromState="smallState" toState="*"> 
     <s:Resize target="{window}" widthTo="400" heightTo="300" /> 
    </s:Transition> 
    <s:Transition fromState="largeState" toState="*"> 
     <s:Resize target="{window}" widthTo="300" heightTo="250" /> 
    </s:Transition> 
</s:transitions> 
+0

Cela semble être une bonne solution au problème, alors merci pour cela. En fait, j'ai cessé d'utiliser Flex - Javascript et HTML5 pour nous maintenant! Mais j'espère que votre réponse aidera les autres avec le même problème. –

0

je peux prendre un grand coup à ce ... mais ne riez pas .. Je ne sais pas si vous avez besoin utilisez un conteneur particulier mais dans tous les cas, définissez la largeur et la hauteur sur 100% et utilisez Grid> GridRow et GridItem pour redimensionner et redimensionner le contrôle de texte, vous pouvez spécifier la largeur de la table ou simplement l'utiliser comme une table HTML dans Flex manipuler la taille des contrôles et des conteneurs ....

espérons que cela aide ...