自动调整新AIR窗口的内容

时间:2012-05-28 11:01:11

标签: air window adobe autoresize

当我手动拉伸窗口边界或最大化/恢复窗口边界时,AIR spark.components.WindowedApplication会自动调整其内容的大小。但spark.components.Window类不提供“开箱即用”的功能:当相应的spark.components.Window.nativeWindow实例执行时,窗口的内容不会随着我拉伸/最大化/恢复窗口而改变它们的大小调整其范围。我的AIR应用程序需要打开多个窗口,并且可以调整大小。如何让它们自动调整其内容的大小以匹配nativeWindow边界?

2 个答案:

答案 0 :(得分:1)

假设您的意思是spark.components.Window,这是基于skinnable容器,因此不应该有任何阻止您使用基于百分比的布局/约束的东西。

<s:Window xmlns:fx="http://ns.adobe.com/mxml/2009" 
          xmlns:s="library://ns.adobe.com/flex/spark" 
          xmlns:mx="library://ns.adobe.com/flex/mx" 
          width="100%" height="100%">

手动处理此类事情的其他方法包括侦听来自舞台的ResizeEvent。

答案 1 :(得分:0)

解决方案是收听来自NativeWindow的RESIZE事件,然后在Window的stageWidth实例上手动设置stageHeightstage。请参阅下面的代码。

override public function open(openWindowActive:Boolean=true):void {
    super.open(openWindowActive);

    if (nativeWindow) {
        chromeWidth = nativeWindow.width - this.width;
        chromeHeight = nativeWindow.height - this.height;
        nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, onNativeResize);
    }
}

private function onNativeResize(event:NativeWindowBoundsEvent):void {
    stage.stageWidth = event.afterBounds.width - chromeWidth;
    stage.stageHeight = event.afterBounds.height - chromeHeight;
}