В Flex 3 я имел обыкновение брать 2 панели, размещать их со 100% настройками ширины в HBox. Если бы я изменил свойство ширины первой панели на что-то меньшее, скажем, 20%, вторая автоматически обновит и заполнит пространство, которое раньше занимало первая, когда первая уменьшала размеры.
Я замечаю в искре, этого не происходит. У меня есть приложение с HorizontalLayout и изменяемым размером панели управления слева и панель справа, ширина = 100%. Когда я изменяю размер левой панели вниз, правая панель ничего не делает. Таким образом, я получаю чистую панель с изменяемыми размерами, кучу потерянного пространства и мою правую панель, просто сидящую там.
То, что я ожидаю, так это то, что поскольку ширина правой панели имеет ширину = "100%", то если размер ее левой панели будет изменен, то в правой панели будет соответствующий рост для заполнения.
Я пытался вручную запустить проверку свойств и размера без эффекта. Мне интересно, что изменилось в HorizontalLayout, который больше не позволяет этой технике работать. Я также хотел бы знать, какие решения доступны?
Вот какой-то грохот:
<mx:Application>
<mx:Script>
<![CDATA[
protected function resizeClick(event:MouseEvent):void
{
pnl1.percentWidth = 10; // When this would execute, pnl2 would automatically
// fill in the space previously held by pnl1.
}
]]>
</mx:Script>
<mx:HBox width="100%" height="100%">
<mx:Panel id="pnl1" width="40%" height="100%"> // Uses 40%
<mx:Button id="resizeButton" click="resizeClick(event)"/>
</mx:Panel>
<mx:Panel id="pnl2" width="100%" height="100%"/> // Fills in the rest of the available space
</mx:HBox>
</mx:Application>
Flex 4.5 не обновляет автоматически размер pnl2 при изменении размера pnl1. Я думаю, что поскольку используется HorizontalLayout, оба потомка будут обновляться при изменении ширины одного из них. Но это, похоже, не так. Я знаю, что могу создать два состояния, чтобы достичь этого, но я думал, что мне не нужно для чего-то столь тривиального.