在flex mobile 4.5中的选项卡式视图导航器应用程序中,如何才能拥有不属于主要选项卡式应用程序的主页选项卡?

时间:2012-12-05 15:44:27

标签: android flex tabs flash-builder ria

我是flex的新手,我正在为移动设备构建应用程序。

我有一个标签式视图导航器应用程序,底部有标签。

在顶部,我有一个带背部的操作栏,还有一些其他按钮尚未设置。

我创建了一个主页选项卡,因为我想在启动画面后有第一个视图的主页,然后使用指南选择下面的一个特定标签,问题是我不想让家里的标签在底部。

有没有办法将首页保留为第一个视图,但没有将其作为底部标签的一部分?

1 个答案:

答案 0 :(得分:2)

简单来说:

  1. 将IndexChangeEvent侦听器添加到TabbedViewNavigator实例[http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/IndexChangeEvent.html]

  2. 当索引更改或正在更改时检查tabbedViewNavigatorInstance.navigators [newIndex] firstView equal Home。

  3. 如果是主页隐藏主页选项卡其他显示主页选项卡,对于此任务,请查看此帖子[Hiding a tab in a Spark TabBar]

  4. 实现本身可以通过多种方式完成,具体取决于您当前的流程。

    这是一个有效的简单示例:

    <?xml version="1.0" encoding="utf-8"?>
    <s:TabbedViewNavigatorApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                                      xmlns:s="library://ns.adobe.com/flex/spark" 
                                      applicationDPI="160" applicationComplete="onAppComplete(event)">
    
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>
    
        <fx:Script>
            <![CDATA[
                import spark.components.DataGroup;
                import spark.events.IndexChangeEvent;
    
                import views.HomeView;
    
                private function onAppComplete(e : Event) : void {
                    this.tabbedNavigator.addEventListener(IndexChangeEvent.CHANGE, onIndexChange);
    
                    showHomeTab(false);
                }
    
                private function onIndexChange(e : IndexChangeEvent) : void {
                    var vn : ViewNavigator = this.navigators[e.newIndex] as ViewNavigator;
    
                    if(vn.firstView === HomeView){
                        showHomeTab(false);
                    } else {
                        showHomeTab(true);
                    }
                }
    
                private function showHomeTab(state : Boolean) : void {
                    var dg : DataGroup = this.tabbedNavigator.tabBar.dataGroup;
    
                    ///if HomeView is at index 0
                    dg.getElementAt(0).visible = state;
                    dg.getElementAt(0).includeInLayout = state;
                }
            ]]>
        </fx:Script>
    
        <s:ViewNavigator label="Home" width="100%" height="100%" firstView="views.HomeView"/>
        <s:ViewNavigator label="Other" width="100%" height="100%" firstView="views.OtherView"/>
    
    </s:TabbedViewNavigatorApplication>