2010-06-21 6 views
5

У меня есть mx: TextArea, и я хочу, чтобы его высота была такой же, как и ее высота содержимого. Нет ничего необычного - просто текстовая область и текст, который не редактируется. Мне нужен простой и надежный способ настроить управление и показать весь текст без вертикального прокрутки - что-то вроде автоматического изменения размера. Также текст моего элемента управления будет установлен только один раз и не изменится, поскольку он не будет редактироваться.Как установить высоту текста TextArea на его высоту контента

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

Существует еще один пост here по той же теме, но это не относится ко мне, потому что установка есть намного более сложна, поскольку включает в себя моделирование и переплета.

+0

Возможный дубликат: http://stackoverflow.com/questions/5672402/spark-textarea-or-richtext-autosize – ggkmath

ответ

-1

Я бы предложил играть с «wordWrap = 'true» в дополнение к политике прокрутки.

+0

Нет, это не оно. Перенос слов переносит текст только на новую строку, если она превышает ширину контейнера. –

3

Используйте textHeight свойства только для чтения из TextArea, и установить высоту TextArea, чтобы быть TextArea.textHeight + все вертикальное дополнение в TextArea использовании плюс высоту верхних и нижних границ (изучить TextArea компонент и фигуры те из них). Этот процесс должен произойти в обработчике, который вы добавляете к событию change для TextArea.

+0

примечание для других: свойство 'textHeight' недоступно для искровых компонентов. Вместо этого просто установите свойство TextArea 'heightInLines = {NaN}' в mxml (или = NaN в AS3). См. Http://blog.flexexamples.com/2010/01/18/creating-a-vertically-auto-resizing-spark-textarea-control-in-flex-4/ – ggkmath

2

Используйте следующий код, если вы хотели бы придерживаться компонента текста области искрового:

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

Или вы можете поставить обработчик изменения в функции.

+1

Это не работает на мобильных устройствах с использованием HTML-текста , – JeffryHouser

+0

Он не работает даже в обычных проектах, когда текст задается через код. Я предлагаю адаптировать высоту к событию 'updateComplete'. –

+0

атрибут 'change' отлично работает :) –

Смежные вопросы