0

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

我有一个选项卡式视图导航器应用程序,底部有选项卡。

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

我创建了一个主页选项卡,因为我想在初始屏幕之后为第一个视图创建一个主页,然后使用指南说选择下面的特定选项卡,问题是我不想在底部有主页选项卡.

有没有办法将主页保留为第一个视图,但不将其作为底部选项卡的一部分?

4

1 回答 1

2

简单来说:

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

  2. 当索引更改或正在更改时,检查 tabbedViewNavigatorInstance.navigators[newIndex] firstView 是否等于 Home。

  3. 如果是主页,则隐藏主页选项卡,否则显示主页选项卡,对于此任务,请查看此帖子 [在 Spark TabBar 中隐藏选项卡]

实现本身可以根据您当前的流程以多种方式完成。

这是一个有效的快速示例:

<?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>
于 2012-12-05T22:00:48.670 回答