我在Flex VBox中有两个标签(A和B),水平对齐设置为“center”。我想将A设置为垂直居中(在容器的正中心),将B设置在A下面(或者在底部;或者将其放置)。最好的方法是什么?
答案 0 :(得分:1)
我发现使用网格控件可以很好地完成任务,而且不需要添加空白标签:
<mx:Grid width="100%" height="100%">
<mx:GridRow height="20%"/>
<mx:GridRow height="60%">
<mx:GridItem verticalAlign="middle" horizontalAlign="center">
<mx:Label text="Label A" fontSize="60" fontFamily="Arial"/>
</mx:GridItem>
</mx:GridRow>
<mx:GridRow height="20%" verticalAlign="middle">
<mx:GridItem verticalAlign="middle" horizontalAlign="center">
<mx:Label text="Label B" fontSize="24" fontFamily="Arial"/>
</mx:GridItem>
</mx:GridRow>
</mx:Grid>
答案 1 :(得分:0)
在A之后将B添加到容器中.VBox的重点是垂直堆叠,因此它可以很容易地完成您想要的操作。
如果你想让它以不同的方式水平放置,你会想要使用VBoxes和HBoxes(也许是间隔器)的组合。例如:
VBOX( 标签A. Hbox(spacer,标签B) )
答案 2 :(得分:0)
你的答案过于复杂。使用Canvas而不是VBox。然后覆盖“updateDisplayList”函数。
override protected function updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w,h);
if(a && b) {
a.y = w/2 - a.height/2;
b.y = a.y + a.height;
}
}