Apache flex 弹性动态形状高度
我不确定这是否可行,有没有办法让Apache flex 弹性动态形状高度,apache-flex,actionscript,adobe,mxml,Apache Flex,Actionscript,Adobe,Mxml,我不确定这是否可行,有没有办法让根据元素在其中的位置设置自己的高度 例如,类似这样的事情: <mx:Form height="{submitBtn.y + submitBtn.height}"> <mx:FormItem>... </mx:FormItem> <mx:FormItem>... </mx:FormItem> <mx:FormItem>... </mx:FormItem>
根据元素在其中的位置设置自己的高度
例如,类似这样的事情:
<mx:Form height="{submitBtn.y + submitBtn.height}">
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>
<s:Button id="submitBtn" label="Submit" />
</mx:FormItem>
</mx:Form>
<mx:ViewStack id="viewStack" resizeToContent="true">
</mx:ViewStack>
...
...
...
其中,根据submitBtn的y位置及其高度动态设置窗体的高度
我尝试使用Alert.show来显示这些值,结果显示submitBtn.y=0
和submitBtn.height
=21。高度听起来很合理,但我知道submitBtn.y
不能为0,因为它低于其他几个值
是否可以动态设置表单高度?可以。用测量方法进行测量:
private var n:Number = 0;
override protected function measure() : void {
super.measure();
if (submitBtn) {
var fi:FormItem = FormItem(submitBtn.parent);
n = fi.y + fi.height;
}
}
然后只需将高度设置为n
编辑:我更改了它以指定包含FormItem的项,而不是按钮,这是我在自己的示例代码中首先测试的。您可以获取按钮的父项,也可以为该表单项提供一个ID。但这种方法确实有效。您的submitBtn.y将始终返回0,因为它是mx:FormItem元素中的y位置(如相对y位置)
所以我想你应该根据表单中按钮的y位置来设置表单的y位置。为什么要这样做?查看DisplayObject的所有子级都可以使用的localToGlobal()方法。它将把你的x,y坐标转换成全局x,y坐标。您应该能够在计算中使用此选项。我希望线程没有关闭,因为我只是遇到了与您相同的问题并找到了正确的解决方案,所以我将尝试解释 每当我的应用程序启动时,它都会读取一个文件并解析它,其中包含一些适合某些表单的信息,我会动态创建它们,而不指定任何高度或宽度 我将它们添加到viewStack中,如下所示:
<mx:Form height="{submitBtn.y + submitBtn.height}">
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>... </mx:FormItem>
<mx:FormItem>
<s:Button id="submitBtn" label="Submit" />
</mx:FormItem>
</mx:Form>
<mx:ViewStack id="viewStack" resizeToContent="true">
</mx:ViewStack>
嗯,我试过了,结果总数仍然是21,这意味着它将submitBtn.y计算为0。不知道怎么了。这个表单在它自己的组件中,你认为这有什么区别吗?当然,我正在将度量代码添加到组件本身中。是的,实际上您应该测试FormItem,它是表单的子项。很抱歉,这是我首先编写和测试的内容,然后根据您的代码进行“调整”。我现在尝试了父项,并且现在给了我正确的数字,谢谢。不,我想将窗体的高度设置为y位置,而不是将其y位置设置为元素的y位置。基本上,我正在使形状尽可能高,以适应其最后一个元素。如果我能得到最后一个元素(submitBtn)的y位置,然后再加上它的高度+一些额外的空间,那么表单的高度就和需要的一样长。好的。。我想我现在明白你想要得到什么了。因此,如果为表单指定了,那么它将采用所需的高度来显示其中的所有内容(这实际上就是您要查找的,请删除表单的高度)。在您的示例中,按钮的高度为21,按钮的Y位置完全设置为0(因为是相对于按钮父级的相对位置)。