私は簡単なアプリケーションを持っています:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:local="*">
<mx:ViewStack width="100%" creationPolicy="all">
<s:NavigatorContent width="100%">
<local:TestGroup width="100%"/>
</s:NavigatorContent>
<s:NavigatorContent width="100%">
<local:TestGroup width="100%"/>
</s:NavigatorContent>
</mx:ViewStack>
</s:Application>
私TestGroup
は裸のSparkグループです。グループの幅がトレースされる creationComplete メソッドがあります。
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="group1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function group1_creationCompleteHandler(event:FlexEvent):void
{
trace("internal group width: " + this.width)
}
]]>
</fx:Script>
</s:Group>
アプリケーションを実行すると、最初のTestGroup
幅は 1600 (ほぼ正しい) ですが、2 番目の幅は関係なくcreationPolicy="all"
0 width="100%"
(ゼロ) です。
ms:ViewStack
選択したコンポーネント以外のコンポーネントの幅を設定していないことがわかりました。
この動作の背後にあるロジックは何ですか?
2 番目のグループが実際の幅を持ち、作成完了時にそれを取得できるようにするには、どうすれば修正できますか?