9

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

这有效:

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

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

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

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

4

4 回答 4

23

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

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

textinp.percentWidth = 100;

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

于 2009-06-25T20:39:38.043 回答
10

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

textinp.percentWidth = NaN;
于 2009-07-06T16:43:33.193 回答
3

上面的答案是正确的,但我不能对此发表评论,因为我对 SO 太陌生了。

当您想将此功能添加到自定义组件时,您可以执行以下操作:

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

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

当然,当你为宽度做这件事时,容器子类正在寻找percentWidth,并且不检查元数据,所以不要称它为widthInPercent或其他东西,即使你可以。

于 2009-06-26T04:53:31.880 回答
1

这是答案:

var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.percentWidth = 100;
于 2009-06-26T08:13:22.057 回答