0

我已经在 Flex 中开发移动应用程序很长时间了,这个问题真的很烦人。我有一个要与拆分视图导航一起使用的应用程序。因此,当应用程序处于横向时,菜单将位于分屏的左侧,而在纵向时,它将显示为顶部的按钮。

我已经完成了确切的步骤,因为我知道他们如何实现这一点。以下是我的默认包文件中的内容:

<s:states>
        <s:State name="portrait"/>
        <s:State name="landscape"/>
    </s:states> 

    <s:SplitViewNavigator id="svn" width="100%" height="100%" autoHideFirstViewNavigator="true">
        <s:ViewNavigator id="leftNav" width="310" height="100%" firstView="views.Menu"/>
        <s:ViewNavigator id="rightNav" width="100%" height="100%" firstView="views.Home">
            <s:actionContent.portrait>
            <s:Button id="NavButton" label="Menu" fontSize="15" click="svn.showFirstViewNavigatorInPopUp(NavButton)"/>
            </s:actionContent.portrait>         
        </s:ViewNavigator>
    </s:SplitViewNavigator>

但是,当我使用此代码并且应用程序处于横向时,我仍然可以在顶部的右侧窗格中看到菜单按钮,更奇怪的是,如果我在横向时单击此按钮,右侧部分将展开以填充屏幕并且菜单将进入弹出框。

有什么我在这里遗漏的东西还是我必须设置的其他东西,因为我尝试了大约 20 种不同的方法,但没有运气,而且非常令人沮丧?提前致谢 :-)

4

1 回答 1

0

我知道这是一个老问题,但这是很多人都会遇到的事情!

所以解决方案实际上非常简单,只需添加visible.landscape="false"到您的按钮就完成了,所以您最终会得到这样的按钮标签:

<s:Button visible.landscape="false" id="NavButton" label="Menu" fontSize="15" click="svn.showFirstViewNavigatorInPopUp(NavButton)"/>

我在您的评论中看到,当设备旋转发生变化时,状态正在发生变化,但是如果由于某种原因这不起作用,您可以向您的应用程序(或视图)添加一个调整大小事件处理程序,然后执行类似的操作

protected function resizeHandler(event:ResizeEvent):void
{
   if( width > height ){
      currentState = "landscape";
   }else{
      currentState = "portrait";
   }
}

我再次知道您可能已经解决了这个问题,但也许它会帮助其他人!

于 2013-03-10T14:49:08.540 回答