Flex布局2个对象,第一个居中

时间:2009-09-01 23:54:43

标签: flex flex3

我在Flex VBox中有两个标签(A和B),水平对齐设置为“center”。我想将A设置为垂直居中(在容器的正中心),将B设置在A下面(或者在底部;或者将其放置)。最好的方法是什么?

3 个答案:

答案 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; 
  }
}