Вот проблема, с которой я постоянно сталкиваюсь:
У меня много ситуаций, когда мне нужно отобразить текст в стилизованном контейнере, например:
<mx:Canvas>
<mx:Text text = "{text}" left = "5" verticalCenter = "0" right = "5" />
</mx:Canvas>
Как видите, текст ограничен левым и правым полями холста, и я не указал высоту для элемента управления текстом, потому что я хочу, чтобы он увеличивался по вертикали, когда я добавляю к нему текст. Причина в том, что если есть одна строка текста, я хочу, чтобы она отображалась в центре холста, но если есть две или три строки текста, я хочу, чтобы текстовый элемент управления отображал эти две или три строки текста.
Однако продолжает происходить то, что он будет отображать только одну строку текста - независимо от того, сколько раз я вызываю invalidateSize () для нее или контейнера. Что я делаю?
ПРЕДОСТЕРЕЖЕНИЕ: высота и ширина холста устанавливаются компонентом, который его создает (все это заключено в пользовательский компонент), поэтому я не могу явно установить ширину или высоту текстового элемента управления ...
ПРИМЕЧАНИЕ: Хорошо, может быть, это простое решение, потому что, когда я набирал этот вопрос, я понял это - но вот шанс ответить на простой вопрос !?





Взгляните на компонент TextArea.
Компоненту Text нужна ширина, если вы хотите, чтобы он автоматически переносился. Если вы использовали строку с новой строкой в ней, она будет расти, как вы ожидали, без ширины. Для вас используйте:
Редактировать: Хорошо, вы хотите, чтобы он был центрирован на холсте разного размера. Тогда ты можешь:
<mx:HBox
width = "500"
paddingLeft = "5"
paddingRight = "5">
<mx:Spacer width = "100%" />
<mx:Text
width = "100%"
text = "{text}" />
<mx:Spacer width = "100%" />
</mx:HBox>
затем установите его на 100% и textAlign по центру.
Я прояснил вопрос еще немного, но я не буду знать, какой будет ширина холста, который является родительским для текста, и он изменится: P