我有标准的Group
控件,我正在为它编写新的布局。在这个布局中,我重写了updateDisplayList
方法。经过一些计算后,我想将Group
控件的大小更改为此方法中的计算值,如下所示:
override public function updateDisplayList(containerWidth:Number, containerHeight:Number):void {
///// Here are some calculations.
layoutTarget.width = maxWidth;
layoutTarget.height = maxHeight + _padding;
}
但是当我这样做时,我在这里得到了无限循环。 updateDisplayList
被一遍又一遍地调用。并且在每次通话时layoutTarget
都有旧的宽度/高度值。
有没有正确的方法可以从layoutTarget
更改updateDisplayList
尺寸?
答案 0 :(得分:1)
对于布局,您应该在measure方法中更改目标大小并直接设置测量的..值而不是宽度/高度
override public function measure():void
{
//calculate maxWidth and maxHeight here
target.measuredWidth = target.measuredMinWidth = maxWidth;
target.measuredHeight = target.measuredMinHeight = maxHeight+_padding;
}
measuredWidth / Height是首选的组件大小,measuredMinWidth / Height是组件的最小大小。