Apache flex 隐藏viewstack容器的容器
我有一个viewstack容器,包含三个视图:红色、黑色和蓝色。我如何才能完全隐藏黑色&不包括它Apache flex 隐藏viewstack容器的容器,apache-flex,actionscript-3,Apache Flex,Actionscript 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
<?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>
我认为最快捷、最肮脏的方法就是将其移除:
myVS.removeElement(black);
但是,我想我应该使用视图状态。这样,您就可以在不知道如何/在何处将其放回的情况下稍后将其取回。定义您的州:
<s:states>
<s:State name="all" />
<s:State name="notBlack" />
</s:states>
然后,当您想要删除它时,可以通过设置currentState
<s:Button click="currentState='notBlack'" label="remove black" />
恐怕我没有领会你问题的意图。ViewStack组件用于显示多个相互“堆叠”的视图,一次只显示一个视图。它不像TabNavigator那样包含内置导航。如果您想“完全隐藏”黑色视图,只需在编译代码之前注释掉它,因此它将永远不会显示 我在您的代码示例中看到,您正在使用带有ViewStack的链接栏作为数据提供程序,因此您可能想问如何将黑色视图保留在链接栏之外。只需执行一些ActionScript魔术来创建自定义数据提供程序:
var dataProvider : ArrayCollection = new ArrayCollection([
{label:"click Red"},
{label:"click blue"}
]);
并指定该数据提供程序作为链接栏的数据提供程序源:
<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black" />
同时使用状态和视图堆栈?那太疯狂了。我看没有理由不起作用,但它们有时被用作两种不同的方法来达到相同的目的。哈!我不知道。。。我当然不认为它们是相互排斥的……:)ViewStack的全部功能是批量更改视图。。。视图状态在整个视图中更为分散。尽管如此,我更新了我的回复,表明你可以移除这个东西。。。又快又脏<代码>myVs.removeElement(黑色)。我只是想说明有很多方法可以解决这个问题:)我没有想过要和美国一起去做,但我认为Flextra的答案对我来说最合适。谢谢
<mx:LinkBar dataProvider="{dataProvider}" borderVisible="false" color="blue" disabledColor="black" />