Flex3:如何根据内容的大小调整容器大小?

时间:2010-03-16 19:51:07

标签: flex flex3 resize containers autoresize

仅供参考,我是Flex新手。

我正在尝试创建一个Flex应用程序,该应用程序可以根据其包含的组件的大小自动缩小,以便用户可以将其缩小到最小视图,以查看它嵌入的更多HTML页面。 / p>

我知道如何使用ExternalInterface更改整个应用程序的大小,但是我无法自动确定隐藏或显示某些内容时大小的变化。

例如:

假设我有以下flex布局:

<?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
        <mx:VBox width="100%" paddingTop="0" paddingBottom="0"
                paddingLeft="0" paddingRight="0" horizontalGap="0" id="mainVBox">
             <mx:HBox>            
                 <mx:Button label="hide-show b" click="{showHideB()}"/>
             </mx:HBox>

             <mx:Text id="a" text="a" fontSize="42" textAlign="center"/>
             <mx:Text id="b" text="b" fontSize="42" textAlign="center"/>

     </mx:VBox>
 </mx:Application>

如何隐藏其中一个文本字段并导致VBox缩小?我目前将其设置为visible = false,但这似乎不会影响父VBox。

一旦VBox收缩,我怎么能检测到应用程序不再需要这么多空间,然后去弄清楚它需要多少空间呢?

我尝试过使用ResizeEvent,但是我无法让它们工作,但我可能做错了。

谢谢!

1 个答案:

答案 0 :(得分:1)

Flex不使用CSS与HTML DOM一起使用的那种“显示”样式。 “可见性”和“显示”的Flex等效项分别是“可见”和“includeInLayout”。

因此,如果您想从文档流中删除视线中的元素,请执行以下操作:

.aStyle {
  visible: false;
  includeInLayout: false;
}

如果在ActionScript中设置它,您可以将其写在一行:

  // myVBox is a VBox
  myVBox.visible = myVBox.includeInLayout = false;

现在,关于允许容器“缩小以适应” - 这非常简单。只是不要放任何宽度或高度。你上面的VBox有一个宽度=“100%”,这意味着它总是会占用与它的父容器一样多的空间而兄弟姐妹给它。