隐藏视图堆栈容器的容器

时间:2010-12-23 02:09:54

标签: flex actionscript-3

我有一个带有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>

2 个答案:

答案 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" />