я получил следующий Flex разметки приложений:Flex фиксированная и переменная высота - можно ли установить разметку?
<app:MyApplicationClass
xmlns:app="*"
width="100%"
height="100%"
layout="vertical"
horizontalScrollPolicy="off"
verticalScrollPolicy="off">
<mx:VBox id="idPageContainer" width="100%" height="100%" verticalGap="0"
horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:HBox id="idTopContainer" width="100%" height="28" horizontalGap="2">
(top menu stuff goes here)
</mx:HBox>
<mx:HBox id="idBottomContainer" width="100%" height="100%" verticalScrollPolicy="off" clipContent="false">
(page stuff goes here)
</mx:HBox>
</mx:VBox>
</app:MyApplicationClass>
Когда я запускаю его, он отображает верхнюю панель с фиксированной высотой, и нижняя панель с изменяемой высотой. Я ожидаю, что высота нижней панели будет содержать оставшуюся высоту, но она как-то переполняется за пределы страницы.
Единственный способом я нашел, чтобы решить эту проблему высоты (до сих пор) является программно установить высоту быть фиксированным вместо переменного:
<mx:HBox id="idBottomContainer" width="100%" height="700" verticalScrollPolicy="off" clipContent="false">
(page stuff goes here)
</mx:HBox>
И фоновый код:
package {
import mx.containers.HBox;
import mx.core.Application;
import mx.events.ResizeEvent;
// (...)
public class MyApplicationClass extends Application {
public var idBottomContainer:HBox;
// (...)
private function ON_CreationComplete (event:FlexEvent) : void {
// (...)
addEventListener(ResizeEvent.RESIZE, ON_Resize);
}
private function ON_Resize (event:Event) : void {
idBottomContainer.height = this.height - idTopContainer.height;
}
}
}
Но это решение слишком «грязно», и я ищу более элегантный способ. Кто-нибудь знает альтернативу?
Только то, что я искал - спасибо! – Prutswonder