代码之家  ›  专栏  ›  技术社区  ›  Paul Mignard

Flex-在画布中布局文本

  •  1
  • Paul Mignard  · 技术社区  · 16 年前

    我一直遇到一个问题:

    在很多情况下,我需要使用样式化容器显示一些文本,如下所示:

    <mx:Canvas>
         <mx:Text text="{text}" left="5" verticalCenter="0" right="5" />    
    </mx:Canvas>
    

    如您所见,中的文本受画布左右边距的约束,我没有为文本控件指定高度,因为我希望在向其添加文本时,文本控件垂直增长。原因是-如果有一行文本,我希望它显示在画布的中心,但如果有两行或三行文本,我希望文本控件显示这两行或三行文本。

    然而,不断发生的事情是,它只会显示一行文本——不管我对它或容器调用了多少次invalidateSize()。我该怎么办?

    警告:画布的高度和宽度是由实例化它的组件设置的(这都被包装在一个自定义组件中),所以我不能显式地设置文本控件的宽度或高度。。。

    注意:好吧,也许这是一个简单的解决办法,因为当我输入这个问题时,我已经猜出来了——但是,这里有机会回答一个简单的问题!?

    2 回复  |  直到 16 年前
        1
  •  2
  •   James Fassett    16 年前

    如果希望文本组件自动换行,则它需要一个宽度。如果您使用了一个包含换行符的字符串,它将按照您的预期工作,并且不会增加宽度。对于您,请使用:

    好的,你想要它在不同大小的画布上居中。然后你可以:

    <mx:HBox 
        width="500"
        paddingLeft="5"
        paddingRight="5">
        <mx:Spacer width="100%" />
        <mx:Text 
            width="100%"
            text="{text}" />
        <mx:Spacer width="100%" />
    </mx:HBox>
    
        2
  •  1
  •   Nick Fortescue    16 年前

    看看TextArea组件。

    推荐文章