Установить ширину компонента Flex на 100% во время выполнения? - PullRequest
9 голосов
/ 26 июня 2009

Если я создаю, скажем, поле ввода через MXML, я могу установить ширину 100%. Но я не могу сделать это во время выполнения с помощью ActionScript.

Это работает:

<mx:TextInput ... width="100%" />

Это не компилируется, говорит, что ширина это число, а не строка:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"

Как установить 100% в качестве размера компонента, созданного во время выполнения с помощью ActionScript?

Ответы [ 4 ]

23 голосов
/ 26 июня 2009

Вам просто нужно использовать атрибут percentWidth вместо атрибута width.

Итак, третья строка в вашем коде будет:

textinp.percentWidth = 100;

Это меня тоже сбило с толку.

10 голосов
/ 06 июля 2009

Если позже вы захотите вернуться к ширине в пикселях для того же компонента, вот что вам нужно сделать:

textinp.percentWidth = NaN;
3 голосов
/ 26 июня 2009

Приведенный выше ответ верен, но я не могу это комментировать, потому что я слишком новичок в SO.

Если вы хотите добавить эту функцию в пользовательский компонент, вы можете сделать что-то вроде этого:

[PercentProxy("percentMultiplier")]
public function set multiplier(value:Number):void
{
  _multiplier = value;
  invalidSomethingOrDoSomething();
}

public function set percentMultiplier(value:Number):void
{
  multiplier = value / 100;
}

Конечно, когда вы делаете это для ширины, подклассы Контейнера ищут centWidth и не проверяют метаду, поэтому не называйте ее widthInPercent или что-то, даже если вы можете.

1 голос
/ 26 июня 2009

Вот ответ:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.percentWidth = 100;
...