我有一个带有3个视图的viewstack容器:红色,黑色和蓝色。我怎样才能完全隐藏黑色&不包括它?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
horizontalCenter="0" verticalCenter="0"
>
<mx:LinkBar dataProvider="{myVS}" borderVisible="false" color="blue" disabledColor="black" />
<mx:ViewStack id="myVS" borderVisible="false" width="100%" height="100%" >
<mx:VBox id="red" label="click red" horizontalAlign="center" verticalAlign="middle" >
<s:Label id="r1" color="red" fontSize="25" text="This is the red label" />
</mx:VBox>
<mx:VBox id="black" label="click black" horizontalAlign="center" verticalAlign="middle" >
<s:Label id="r2" color="black" fontSize="25" text="This is the black label" />
</mx:VBox>
<mx:VBox id="blue" label="click blue" horizontalAlign="center" verticalAlign="middle" >
<s:Label id="r3" color="blue" fontSize="25" text="This is the blue label" />
</mx:VBox>
</mx:ViewStack>
</s:Application>
答案 0 :(得分:1)
我担心我可能会错过你问题的意图。 ViewStack组件用于显示“堆叠”在一起的多个视图,只有一次显示视图。它不包括像TabNavigator那样的内置导航。如果你想“完全隐藏”黑色视图,只需在编译代码之前将其注释掉,因此永远不会显示。
我在你的代码示例中看到你正在使用一个带有ViewStack作为dataProvider的链接栏,所以也许你想问一下如何将黑色视图保留在linkBar上。只需执行一些ActionScript魔术来创建自定义dataProvider:
var dataProvider : ArrayCollection = new ArrayCollection([
{label:"click Red"},
{label:"click blue"}
]);
并将dataPRovider指定为linkBar的dataProvider源:
<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black" />
答案 1 :(得分:0)
我认为快速而最脏的方法就是删除它:
myVS.removeElement(black);
但是,我认为我会使用视图状态。这可以让你以后再找回它而不知道如何/在哪里放回去。定义你的州:
<s:states>
<s:State name="all" />
<s:State name="notBlack" />
</s:states>
在“黑色”VBox
中,将其排除在“notBlack”状态之外:
<mx:VBox id="black" excludeFrom="notBlack" ... />
然后,当您要删除它时,可以通过设置currentState
<s:Button click="currentState='notBlack'" label="remove black" />