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