Apache flex 如何在Flex移动应用程序中翻页时自动调整页面大小

Apache flex 如何在Flex移动应用程序中翻页时自动调整页面大小,apache-flex,actionscript-3,Apache Flex,Actionscript 3,这可能是一个简单的问题,但由于某些原因,我似乎无法弄清楚如何在Flex移动应用程序中从横向更改为纵向时自动调整页面大小 i、 e.我有一个页面,显示一个菜单来收集客户信息,我有它的布局,我希望它用于纵向,但如果我切换到横向,格式化会导致信息从屏幕上消失 这可能是一个我应该知道答案的问题,但有人对如何进行类似的事情有任何想法吗 提前感谢您的建议 示例页 <?xml version="1.0" encoding="utf-8"?> <s:View backgroundCol

这可能是一个简单的问题,但由于某些原因,我似乎无法弄清楚如何在Flex移动应用程序中从横向更改为纵向时自动调整页面大小

i、 e.我有一个页面,显示一个菜单来收集客户信息,我有它的布局,我希望它用于纵向,但如果我切换到横向,格式化会导致信息从屏幕上消失

这可能是一个我应该知道答案的问题,但有人对如何进行类似的事情有任何想法吗

提前感谢您的建议

示例页

    <?xml version="1.0" encoding="utf-8"?>
<s:View backgroundColor="0xF7F9FD" xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="Page1">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>


    <s:Group width="100%" height="100%">

        <s:VGroup verticalAlign="top" paddingTop="5" width="100%" height="100%" horizontalAlign="center">
            <s:Image id="OLICLogo" verticalAlign="top" horizontalAlign="left" source="@Embed('PuritanLogo.jpg')"/>
        </s:VGroup>

        <s:VGroup>
            <s:HGroup paddingTop="125" paddingLeft="40">
                <s:Label id="lblJoint" text="Joint Application" paddingTop="10"/>
                <s:CheckBox id="chkBoxJoint"/>  
            </s:HGroup>
        </s:VGroup>

        <s:VGroup>
            <s:HGroup paddingTop="110" paddingLeft="60">
                <s:Label id="lblTitle" paddingLeft="250" text="Personal Information" fontStyle="italic" fontWeight="bold" fontSize="16" paddingTop="10"/>   
            </s:HGroup>
        </s:VGroup>


        <s:VGroup paddingLeft="375" paddingTop="200" horizontalAlign="center">
            <s:Line visible="true" xFrom="70" xTo="70" yFrom="300" yTo="870">
                <s:stroke>
                    <s:SolidColorStroke color="0x000000" weight="2"/>
                </s:stroke>
            </s:Line>
        </s:VGroup>

        <s:VGroup paddingLeft="40" paddingTop="180">
            <s:HGroup>
                <s:Label id="lblClient" fontWeight="bold" fontSize="16" paddingLeft="125" paddingRight="300" text="Client"/>
                <s:Label id="lblSpouse" fontWeight="bold" fontSize="16" text="Spouse"/>
            </s:HGroup>

        </s:VGroup>

        <s:VGroup paddingLeft="50" paddingTop="240">
            <s:Label id="lblCFName" paddingTop="10" text="First Name: "/>
            <s:Label id="lblCMName" paddingTop="20" text="Middle Name: "/>
            <s:Label id="lblCLName" paddingTop="20" text="Last Name: "/>
            <s:Label id="lblCDOB" paddingTop="20" text="DOB: "/>
            <s:Label id="lblCAddress" paddingTop="50" text="Address: "/>
            <s:Label id="lblCCity" paddingTop="20" text="City: "/>
            <s:Label id="lblCState" paddingTop="20" text="State: "/>
            <s:Label id="lblCZip" paddingTop="20" text="Zip Code: "/>
            <s:Label id="lblCEmail" paddingTop="50" text="Email Address: "/>
            <s:Label id="lblCPhone" paddingTop="20" text="Phone Number: "/>
            <s:Label id="lblCCell" paddingTop="20" text="Cell Phone: "/>
        </s:VGroup>

        <s:VGroup paddingLeft="170" paddingTop="240">
            <s:TextInput width="175" id="txtICFName"/>
            <s:TextInput width="175" id="txtICMName"/>
            <s:TextInput width="175" id="txtICLName"/>
            <s:TextInput width="175" id="txtICDOB"/>
        </s:VGroup>

        <s:VGroup paddingLeft="170" paddingTop="430">
            <s:TextInput width="175" id="txtICAddress"/>
            <s:TextInput width="175" id="txtICCity"/>
            <s:TextInput width="175" id="txtICState"/>
            <s:TextInput width="175" id="txtICZip"/>
        </s:VGroup>

        <s:VGroup paddingLeft="170" paddingTop="620">
            <s:TextInput width="175" id="txtICEmail"/>
            <s:TextInput width="175" id="txtICPhone"/>
            <s:TextInput width="175" id="txtICCell"/>
        </s:VGroup>

        <s:VGroup paddingLeft="410" paddingTop="240">
            <s:Label id="lblSFName" paddingTop="10" text="First Name: "/>
            <s:Label id="lblSMName" paddingTop="20" text="Middle Name: "/>
            <s:Label id="lblSLName" paddingTop="20" text="Last Name: "/>
            <s:Label id="lblSDOB" paddingTop="20" text="DOB: "/>
            <s:Label id="lblSAddress" paddingTop="50" text="Address: "/>
            <s:Label id="lblSCity" paddingTop="20" text="City: "/>
            <s:Label id="lblSState" paddingTop="20" text="State: "/>
            <s:Label id="lblSZip" paddingTop="20" text="Zip Code: "/>
            <s:Label id="lblSEmail" paddingTop="50" text="Email Address: "/>
            <s:Label id="lblSPhone" paddingTop="20" text="Phone Number: "/>
            <s:Label id="lblSCell" paddingTop="20" text="Cell Phone: "/>
        </s:VGroup>

        <s:VGroup paddingLeft="530" paddingTop="240">
            <s:TextInput width="175" id="txtISFName"/>
            <s:TextInput width="175" id="txtISMName"/>
            <s:TextInput width="175" id="txtISLName"/>
            <s:TextInput width="175" id="txtISDOB"/>
        </s:VGroup>

        <s:VGroup paddingLeft="530" paddingTop="430">
            <s:TextInput width="175" id="txtISAddress"/>
            <s:TextInput width="175" id="txtISCity"/>
            <s:TextInput width="175" id="txtISState"/>
            <s:TextInput width="175" id="txtISZip"/>
        </s:VGroup>

        <s:VGroup paddingLeft="530" paddingTop="620">
            <s:TextInput width="175" id="txtISEmail"/>
            <s:TextInput width="175" id="txtISPhone"/>
            <s:TextInput width="175" id="txtISCell"/>
        </s:VGroup>

        <s:VGroup paddingTop="800" paddingLeft="325" horizontalAlign="center">
            <s:Button id="btnContinue" click="btnContinue_clickHandler(event)" label="Continue"/>
        </s:VGroup>

    </s:Group>

    <fx:Script>
        <![CDATA[
            protected function btnContinue_clickHandler(event:MouseEvent):void
            {
                navigator.pushView(AFEAW.Page2);
            }

        ]]>
    </fx:Script>

</s:View>

简言之,倾听舞台上的枪声

在你的事件中;做事

更多关于


我不确定您的主应用程序标记或视图是否会触发此事件。

对于移动应用程序,我尝试使用约束(顶部、底部、左侧、右侧、垂直中心、水平中心)和百分比宽度/高度,以便在方向更改时我不太担心。当我确实担心时,我依赖于视图状态

如果您使用的是Flex
View
类,那么只有在您想要防止方向更改时才需要更改StageOrientationEvent.ORIENTATION\u

原因是
视图
类将自动为您设置“纵向”或“横向”视图状态,前提是您的实现仅包含一个视图。下面是
View
类的
getCurrentState()
方法:

public function getCurrentViewState():String
{
    var aspectRatio:String = FlexGlobals.topLevelApplication.aspectRatio;

    if (hasState(aspectRatio))
        return aspectRatio;

    // If the appropriate state for the orientation of the device
    // isn't defined, return the current state
    return currentState;
}
因此,如果您的
视图
类具有如下状态:

<s:states>
    <s:State name="portrait" stateGroups="portraitStates,whatever"/>
    <s:State name="landcsape" stateGroups="landscapeStates"/>
    <s:State name="landscapeWithControls" stateGroups="landscapeStates"/>
</s:states>

在模拟iOS设备时,这在FlashBuilder 4.6的视图中不起作用;方向也没有改变。我发现了问题,你必须将侦听器添加到“舞台”中,这样就无法在视图中获取事件。这篇文章帮助@Mondain解决了这个问题;FlashBuilder的版本无关紧要——除非您实际上是在iOS设备上运行FlashBuilder;这会给我留下深刻印象。更具体地说,您应该告诉我们您在iOS yah上使用的Flex SDK和/或AIR SDK的哪个版本是永远不会发生的。我正在使用Flex4.6/AIR3.5构建Android和iOS。不要误解我的评论,我已经让它工作了;我只是说,听众必须被添加到舞台上,因为这个事件不会出现在观众面前。
override public function getCurrentViewState():String
{
    var state:String = super.getCurrentViewState();
    if (someCondition)
    {
        state+="withControls";
    }
    return state;
}