Flex - Выкладывание текста на холсте - PullRequest
1 голос
/ 12 октября 2008

Вот проблема, с которой я продолжаю сталкиваться:

У меня много ситуаций, когда мне нужно отобразить какой-то текст в стилизованном контейнере, например:

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

Как вы можете видеть - текст ограничен левым и правым полями холста, и я не указал высоту для текстового элемента управления, потому что я хочу, чтобы он увеличивался по вертикали при добавлении в него текста. Причина в том, что если есть одна строка текста, я хочу, чтобы она отображалась в центре холста, но если есть две или три строки текста, я хочу, чтобы текстовый элемент управления отображал эти две или три строки текста.

Однако, что продолжает происходить, это то, что он будет отображать только одну строку текста - независимо от того, сколько раз я вызываю invalidateSize () для него или контейнера. Что мне делать?

CAVEAT: Высота и ширина холста задается компонентом, который его создает (все это заключено в пользовательский компонент), поэтому я не могу явно установить ширину или высоту текстового элемента управления ...

ПРИМЕЧАНИЕ: Хорошо, может быть, это легко исправить, потому что, когда я набирал этот вопрос, я понял это, но есть шанс ответить на простой вопрос!?

Ответы [ 2 ]

2 голосов
/ 12 октября 2008

Компоненту 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>
1 голос
/ 12 октября 2008

Посмотрите на компонент TextArea.

...