仅供参考,我是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,但是我无法让它们工作,但我可能做错了。
谢谢!
答案 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%”,这意味着它总是会占用与它的父容器一样多的空间而兄弟姐妹给它。