Компоновка Flex - изменение размера встроенных текстовых компонентов - PullRequest
0 голосов
/ 03 сентября 2010

Я пытаюсь создать простой макет из 3 горизонтальных компонентов Label / Text. Я бы хотел, чтобы размеры компонентов изменялись в зависимости от их текстового содержимого, которое будет меняться во время выполнения.

Компоненты должны выглядеть примерно так:

<mx:Label text="{firstNum}" />
<mx:Label text="-" />
<mx:Label text="{secondNum}" />

Вывод будет выглядеть как «0-1» или «1-99» или «1000-9999».

Моя проблема в том, что ширина метки по умолчанию шире, чем ее содержимое (даже если для заполнения задано значение 0), и если я установлю явную ширину, большие числа будут обрезаться при обновлении связанных переменных.

Итак, я хочу создать метку, которая будет ровно такой же ширины, как и ее содержимое, даже если это содержимое состоит из одного символа.

На экране текст из 3 меток должен выглядеть так же, как если бы весь текст был введен в одну метку.

(Мне нужно хранить текст в отдельных компонентах, чтобы я мог воспроизводить эффекты для firstNum / secondNum по отдельности.)

Кажется, это должно быть достаточно просто, верно?

Спасибо! Stu

Ответы [ 2 ]

2 голосов
/ 03 сентября 2010

Существует несколько решений:

  1. Установка отрицательных отступов
  2. Установка отрицательных значений horizontalGap в контейнере
  3. Перемещение во Flex 4 и Spark Label - это не такесть такие проблемы
1 голос
/ 03 сентября 2010

Я не уверен, что хорошо понял ваш вопрос, но попробуйте это:

Flex 3:

<mx:HBox horizontalGap="0">
   <mx:Label text="{firstNum}"/>
   <mx:Label text=" - "/>
   <mx:Label text="{secondNum}"/>
</mx:HBox>

Flex 4:

<s:Group>
   <s:layout>
      <HorizontalLayout gap="0"/>
   </s:Layout>
   <mx:Label text="{firstNum}"/>
   <mx:Label text=" - "/>
   <mx:Label text="{secondNum}"/>
</s:Group>

Конечно, вы можете установить горизонтальный зазор на что угодно. Это сделает поток управления Label слева направо до тех пор, пока позволяет родительский контейнер.

UPDATE:

Если вы имеете в виду, что расстояние между метками слишком велико, попробуйте установить отступы (которые у вас есть), margin и horizontalGap / gap на 0.

Если это все еще не помогает, не могли бы вы добавить код или снимок экрана, пожалуйста?

...