如何正确调整Label容器宽度,使其父或兄弟宽度

时间:2011-12-13 16:52:51

标签: actionscript-3 flex width label containers

标签及其容器的宽度有问题。 我有一个右侧的面板,可以占用尽可能多的空间,在左边的一个VGroup,顶部的宽度为1的面板,将为儿童和底部的1个面板具有相同的宽度宽度为左上图。

在左上方的面板上有一个可以改变宽度的按钮。 在左下方面板上有一个标签,可以将其宽度调整到容器面板,这样,标签就会使断点正确地适合其容器。

它在开始时正常工作,并在按钮的宽度变大时正确调整大小。但是当按钮变为较小的宽度时,左侧面板和组保持与之前相同的尺寸,因此左侧部分仅在需要时变大,而不会减小其宽度。

<fx:Script>
    <![CDATA[
        protected function buttonClick(event:MouseEvent):void{
            button.width= 70+Math.random()*200;
        }
        protected function vgroupResize():void{}
    ]]>
</fx:Script>

<s:HGroup width="500" height="500">
    <s:VGroup id="vGroup" height="100%" resize="vgroupResize()">
        <s:Panel id="leftUp" title="left up" width="100%" height="100%" minWidth="1">
            <s:Button id="button" label="button" click="buttonClick(event)"/>
        </s:Panel>

        <s:Panel id="leftDown" title="left down" width="{leftUp.width}">
            <s:Label width="100%" text="nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan"/>
        </s:Panel>
    </s:VGroup>

    <s:Panel title="right" width="100%" height="100%"/>
</s:HGroup>

我发现了两个总是有效的丑陋解决方案,但我想以正确的方式或不太可怕的方式来做到这一点。

一种解决方案是在按钮改变宽度时设置leftDown.width = 1:

        protected function buttonClick(event:MouseEvent):void
        {
            button.width= 70+Math.random()*200;
            leftDown.width= 1;
        }

其他解决方案是在按钮更改其宽度时移除左下方面板,并在调整VGroup大小时重新添加:

        protected function buttonClick(event:MouseEvent):void
        {
            button.width= 70+Math.random()*200;

            if(leftDown.parent!=null) vGroup.removeElement(leftDown);
        }

        protected function vgroupResize():void
        {
            if(leftDown.parent==null) vGroup.addElement(leftDown);
        }

我希望有人知道这样做的正确方法。

2 个答案:

答案 0 :(得分:1)

我根据Sudharsanan建议重做了代码。现在工作正常。

<fx:Script>
    <![CDATA[

        protected function buttonClick(event:MouseEvent):void
        {
            button.width= 70+Math.random()*200;
        }

    ]]>
</fx:Script>

<s:HGroup width="500" height="500">
    <s:VGroup id="vGroup" width="{leftUp.width==0?1:leftUp.width}" height="100%">
        <s:Panel id="leftUp" title="left up" height="100%">
            <s:Button id="button" label="button" click="buttonClick(event)"/>
        </s:Panel>

        <s:Panel id="leftDown" title="left down" width="100%">
            <s:Label width="100%" text="nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan"/>
        </s:Panel>
    </s:VGroup>

    <s:Panel title="right" width="100%" height="100%"/>
</s:HGroup>

答案 1 :(得分:0)

我的意见是将vpanel宽度设为可绑定到按钮宽度,如此

<s:HGroup width="500" height="500">
        <s:VGroup id="vGroup" width="{button.width + 2}" height="100%" resize="vgroupResize()">
            <s:Panel id="leftUp" title="left up" width="100%" height="100%" minWidth="1">
                <s:Button id="button" label="button" click="buttonClick(event)"/>
            </s:Panel>

            <s:Panel id="leftDown" title="left down" width="{leftUp.width}">
                <s:Label width="100%" text="nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan n y a n nyan"/>
            </s:Panel>
        </s:VGroup>

        <s:Panel title="right" width="100%" height="100%"/>
    </s:HGroup>

这比其他人简单。