是否有任何可折叠的Flex容器可以处理预折叠时有效的动态内容?

时间:2011-02-02 11:47:06

标签: flex actionscript resize

您是否知道任何可折叠的Flex容器可以处理预折叠时有效的动态内容?

我尝试使用Arc90 for Flex的CollapsiblePanel组件,但在预折叠时它不起作用。

如果我在面板中有一个VBox,并且我将CollapsiblePanel的“collapsed”属性设置为true,则无法恢复CollapsiblePanel的大小。看起来这就是发生的事情:

  1. 在MXML标记中,CollapsiblePanel的折叠属性已预设为true。
  2. 自CollapsiblePanel折叠以来,VBox自动将其高度调整为0。
  3. 当CollapsiblePanel的折叠属性更改为false(即,由用户展开)时,VBox不会自行展开,因为其父级的内容区域为0。
  4. 因此,CollapsiblePanel保持在相同的高度,因为其内容的高度为0。
  5. 因此...
  6. 注意:仅当CollapsiblePanel预先折叠时才会出现这种情况,如下面的标记所示。

    我已经尝试过这个(没用):

        <containers:CollapsiblePanel minimize="pnl_minimize(event)" 
    restore="pnl_restore(event)" height="100%" width="100%" collapsed="true">
        <mx:VBox width="100%" height="100%" verticalGap="0">
           <mx:LinkButton id="lnkSales1" label="Sales 1" />
           <mx:LinkButton id="lnkSales2" label="Sales 2" />
        </mx:VBox>
        </containers:CollapsiblePanel>
    
     private function pnl_restore(event:Event):void
    {
        var objPanel:CollapsiblePanel = event.target as CollapsiblePanel;
        var objChildArray:Array = objPanel.getChildren();
        for each (var obj:Object in objChildArray)
        {
           obj.invalidateSize();
        }
        objPanel.invalidateSize();
    }
    

    有没有人成功做过这样的事情?你使用了什么组件?

1 个答案:

答案 0 :(得分:0)

最后得到了一个解决方案,虽然这是一个解决方法。我允许加载所有面板,然后以编程方式折叠它们,而不是在标记中预先折叠它们。这样,它们的大小已经计算好,并且可以在用户恢复时无任何问题地恢复。

有没有人有更好的解决方案?