Как правильно настроить ширину контейнера Label по ширине родительского или братского элемента - PullRequest
0 голосов
/ 13 декабря 2011

У меня проблема с шириной этикетки и ее контейнера.У меня есть 1 панель справа, которая займет столько места, сколько это возможно, слева одна 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>

У меня естьнашел 2 уродливых решения, которые всегда работают, но я хочу правильный или менее ужасный способ сделать это.

Одним из решений является установка 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 ]

1 голос
/ 14 декабря 2011

Я переделал код, основываясь на советах Судхарсана.Теперь работает правильно.

<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>
0 голосов
/ 14 декабря 2011

По моему мнению, ширина 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>

Это довольно просто, чем другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...