如果我通过MXML
创建输入字段,我可以将宽度设置为100%
。但我似乎无法在运行时通过ActionScript执行此操作。
这有效:
<mx:TextInput ... width="100%" />
这不会编译,宽度是一个数字,而不是字符串:
var textinp:TextInput = new TextInput();
someContainer.addChild(textinp);
textinp.width = "100%"
如何将100%
设置为通过ActionScript在运行时创建的组件的大小?
答案 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;