我在Flex 3.2中编写了一个扩展面板组件的自定义组件。在用户执行某个操作后,我想隐藏Panel组件中的主要内容区域,以及控制栏(如果指定了一个)。关于如何做到这一点的任何想法? controlBar.visible似乎没有隐藏控制栏,除了遍历主面板的所有子项之外,我不知道另一种访问主要内容区域的简单方法,我想尽可能避免这种情况。感谢
答案 0 :(得分:0)
无法设置一个主容器,无论是HBox还是VBox等......在Panel中包含所有子容器,然后您可以根据用户的操作切换此容器可见性。
对于ControlBar,您应该能够更改其可见性值...
答案 1 :(得分:0)
你似乎无法隐藏控制栏的原因是因为你只是设置它的可见属性 - 它仍占用它的空间。所以,要真正“隐藏”它,请执行以下操作:
myControlBar.includeInLayout = false;
另外,要隐藏所有孩子,只需要一个简单的循环:
for each (var oChild:DisplayObject in idPanel.getChildren()) {
oChild.visible = false;
}
所以,整个应用程序看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private function doit(): void {
idControl.visible = false;
idControl.includeInLayout = false;
for each (var oChild:DisplayObject in idPanel.getChildren()) {
oChild.visible = false;
}
}
]]>
</mx:Script>
<mx:Button x="10" y="10" label="Button" click="doit()"/>
<mx:Panel x="83" y="10" width="250" height="200" layout="absolute" id="idPanel">
<mx:CheckBox x="10" y="10" label="Checkbox"/>
<mx:DateField x="10" y="40"/>
<mx:ControlBar id="idControl">
</mx:ControlBar>
</mx:Panel>
</mx:Application>
希望有所帮助!