首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >灵活地调整组件大小,就像在自定义布局中包装元素一样

灵活地调整组件大小,就像在自定义布局中包装元素一样
EN

Stack Overflow用户
提问于 2013-03-25 16:46:36
回答 1查看 355关注 0票数 0

我有一个名为NewsLayout的自定义布局:

代码语言:javascript
复制
    override public function updateDisplayList(width:Number, height:Number)
        : void
    {
        super.updateDisplayList( width, height );

        var layoutTarget:GroupBase = target;

        var element:ILayoutElement;

        for( var i:int = 0; i < layoutTarget.numElements; i++ )
        {
            element = layoutTarget.getElementAt( i );


            if(i==0){
                element.setLayoutBoundsSize( NaN, NaN );
                element.setLayoutBoundsPosition( 0, 0 );
            }
            else if(i==1)
            {
                var refEl = layoutTarget.getElementAt( 0 );
                element.setLayoutBoundsSize( NaN, NaN );
                element.setLayoutBoundsPosition( 0, refEl.height+5);
            }
            else if(i==2)
            {
                var refEl = layoutTarget.getElementAt( 0 );
                var refEl2 = layoutTarget.getElementAt( 1 );
                element.setLayoutBoundsSize( NaN, NaN );                    
                element.setLayoutBoundsPosition( Math.max(refEl2.width,refEl.width)+5, 0);


            }
        }
    }

我的自定义组件使用了这个布局和另外三个布局。它的布局可能会随时改变。无论使用哪种布局,我的组件都应该包装其中的所有元素。

为此,我尝试覆盖测量方法,以便根据组件中的组件调整组件的大小。我试图像这样计算它里面所有项目的最低点。所有元素的y位置都意外为0,但正如您所见,我在layout类中设置了它们的坐标。

代码语言:javascript
复制
    override protected function measure():void {

            super.measure(); var max= 0;
            for(var i=0 ; i < this.numElements;i++)
            {
                if((this.getElementAt(i).height +this.getElementAt(i).y) > max)
                    max = this.getElementAt(i).height + this.getElementAt(i).y;// here y position is 0
            }
            //this.height =this.measuredHeight;
            this.measuredHeight = max;
            this.height = max;
            trace("maxheight:"+max);

让组件包装内部所有元素的正确方式是什么,而不管它使用的布局是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-25 21:25:32

在flex组件生命周期度量()中,在updateDisplayList()之前调用一次;因此您的组件的y位置为0;尝试对updateDisplayList()中的所有元素使用setActualSize(宽度,高度)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15610738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档