动态放置标签

时间:2012-04-16 19:00:16

标签: actionscript-3 flex flash-builder

在我的.mxml文件中,我使用来自数据库的文本数据并排填充两个标签。

像这样:

    <s:Label x="10" y="37.5" width="100%" text="{data.city}"/>
    <s:Label x="86" y="36.75" width="100%" text="{data.state}"/>

有时,我会得到一段特别长的文本数据,这会导致2个标签相互重叠,变得完全不可读。

我认为这是因为我有x和y设置。有没有办法让这更有活力?

谢谢!

4 个答案:

答案 0 :(得分:3)

我建议您探索不同的Flex布局容器。

HGroup

<s:HGroup>
    <s:Label text="{data.city}"/>
    <s:Label text="{data.state}"/>
</s:HGroup>

这提供了您从示例中寻找的那种布局。但是,您可能还想查看Flex提供的其他一些容器。

表格

Flex表单以对创建表单通常有用的方式对齐数据。您可能希望将此视为您的UI,特别是如果您允许用户提供持续返回到您的数据库的输入。

<s:Form>
    <s:FormItem label="City:">
        <s:Label text="{data.city}"/>
    </s:FormItem>
    <s:FormItem label="State:">
        <s:Label text="{data.state}"/>
    </s:FormItem>
</s:Form>

答案 1 :(得分:1)

尝试使用第一个标签+空格+ x第一个标签的宽度设置第二个标签的X.

答案 2 :(得分:1)

你可以做几件事:

如果您有一个被调用的函数来设置每个标签的值,请根据该函数中的内容重新定位标签。

如果标签的值绑定到数据,以便在刷新数据时不一定得到通知,那么是时候覆盖UIComponent的updateDisplayList()方法,并让它重新定位你的标签。

通过理解和使用UIComponent的生命周期,可以获得很多效率(这将提高您的性能)。如果您只是谷歌“Flex组件生命周期”

,那么有很多关于这个主题的好信息 祝你好运!

答案 3 :(得分:1)

如果您必须以有限的宽度显示标签,那么您可以使用标签的maxWidth属性,这将在标签中显示您的文本,如果文本很长,那么它将显示一些文本并保留为...格式

<s:Label text="{data.city}" maxWidth="150"/>