У меня проблема с шириной этикетки и ее контейнера.У меня есть 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);
}
Я надеюсь, что кто-то знает правильный способ сделать это.