我是flex的新手,我正在为移动设备构建应用程序。
我有一个标签式视图导航器应用程序,底部有标签。
在顶部,我有一个带背部的操作栏,还有一些其他按钮尚未设置。
我创建了一个主页选项卡,因为我想在启动画面后有第一个视图的主页,然后使用指南选择下面的一个特定标签,问题是我不想让家里的标签在底部。
有没有办法将首页保留为第一个视图,但没有将其作为底部标签的一部分?
答案 0 :(得分:2)
简单来说:
将IndexChangeEvent侦听器添加到TabbedViewNavigator实例[http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/events/IndexChangeEvent.html]
当索引更改或正在更改时检查tabbedViewNavigatorInstance.navigators [newIndex] firstView equal Home。
如果是主页隐藏主页选项卡其他显示主页选项卡,对于此任务,请查看此帖子[Hiding a tab in a 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>