在运行时将Flex组件宽度设置为100%?

时间:2009-06-25 20:36:01

标签: flex flash actionscript-3 mxml flex4

如果我通过MXML创建输入字段,我可以将宽度设置为100%。但我似乎无法在运行时通过ActionScript执行此操作。

这有效:

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

这不会编译,宽度是一个数字,而不是字符串:

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

如何将100%设置为通过ActionScript在运行时创建的组件的大小?

4 个答案:

答案 0 :(得分:23)

您只需使用percentWidth属性,而不是width属性。

因此,代码中的第三行是:

textinp.percentWidth = 100;

这也使我绊倒了一段时间。

答案 1 :(得分:10)

如果您以后想要切换回同一组件的基于像素的宽度,请执行以下操作:

textinp.percentWidth = NaN;

答案 2 :(得分:3)

上面的答案是正确的,但我不能评论它因为我太新了。

如果要将此功能添加到自定义组件,可以执行以下操作:

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

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

当然,当你为宽度做这个时,Container子类正在寻找 percentWidth ,并且不检查metada,所以不要把它称为 widthInPercent 或者其他什么东西,即使你可以。

答案 3 :(得分:1)

以下是答案:

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