2010-06-21 2 views
5

J'ai un mx: TextArea et je veux que sa hauteur soit la même que sa hauteur de contenu. Il n'y a rien d'extraordinaire - juste une zone de texte et un texte qui n'est pas éditable. J'ai besoin d'un moyen simple et fiable de faire correspondre le contrôle et montrer tout le texte sans défilement vertical - quelque chose comme le redimensionnement automatique. Le texte de mon contrôle ne sera défini qu'une seule fois et ne changera pas car il ne sera pas éditable.Comment définir la hauteur TextArea à sa hauteur de contenu

<mx:TextArea id="myTextArea" 
      editable="false" 
      width="100%" 
      verticalScrollPolicy="off" > 
    <mx:text> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id lorem 
     quis ante pulvinar auctor at eget risus. Nulla facilisi. Morbi ultricies 
     dignissim lorem, quis suscipit felis ullamcorper et. 
    </mx:text> 
</mx:TextArea> 

Il y a un poste plus here sur le même sujet, mais il est sans importance pour moi parce que l'installation il y a beaucoup plus compliquée car elle comprend le style et la reliure.

+0

Copie possible de: http://stackoverflow.com/questions/5672402/spark-textarea-or-richtext-autosize – ggkmath

Répondre

-1

Je suggère de jouer avec "wordWrap = 'true'" en plus de la politique de défilement.

+0

Non, ce n'est pas ça. Word Wrap ne transférera le texte à une nouvelle ligne que si elle dépasse la largeur du conteneur. –

3

Utilisation du textHeight lecture seule propriété de l'TextArea, et régler la hauteur du TextArea être TextArea.textHeight + quel que soit le rembourrage vertical TextArea les utilisations ainsi que la hauteur des bords supérieurs et inférieurs (examiner le composant et la figure TextArea ceux dehors). Ce processus doit se produire dans un gestionnaire que vous ajoutez à l'événement change pour le TextArea.

+0

note pour les autres: la propriété 'textHeight' n'est pas disponible sur les composants d'étincelles. Au lieu de cela, définissez simplement la propriété TextArea 'heightInLines = {NaN}' dans mxml (ou = NaN dans AS3). Voir: http://blog.flexexamples.com/2010/01/18/creating-a-vertically-auto-resizing-spark-textarea-control-in-flex-4/ – ggkmath

2

Utilisez le code suivant si vous souhaitez coller avec le composant de zone de texte d'allumage:

<s:TextArea 
    id="myTextArea" 
    editable="false" 
    width="100%" 
    verticalScrollPolicy="off" 
    change="myTextArea.height = myTextArea.scroller.viewport.contentHeight + 2;"> 
    <s:text> 
     Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id lorem 
     quis ante pulvinar auctor at eget risus. Nulla facilisi. Morbi ultricies 
     dignissim lorem, quis suscipit felis ullamcorper et. 
    </s:text> 
</s:TextArea> 

Ou vous pouvez mettre le gestionnaire de changement de fonction.

+1

Cela ne fonctionne pas sur Mobile en utilisant HTML Text . – JeffryHouser

+0

Cela ne fonctionne pas même dans les projets normaux lorsque le texte est défini via le code. Je suggère d'adapter la hauteur à l'événement 'updateComplete'. –

+0

attribut 'change' fonctionne très bien :) –

Questions connexes