如何将元素包装到Flex中水平组中的新行?

时间:2012-02-18 22:41:45

标签: flex flex4 flex4.5

我在Flex中有一个具有指定宽度的Spark水平组(s:HGroup) 但是该组外的所有标签都被隐藏(在100像素之后)。

<s:HGroup width="100">
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />      
    <s:Label text="Hello" /> 
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
</s:HGroup>

(这是一个例子,我在Actionscript中向HGroup添加元素,不知道有多少)

那么当出现溢出时,如何将HGroup中的元素包装到新行?

2 个答案:

答案 0 :(得分:1)

简短的回答是你不能。 HGroup水平放置元素。

我想你会想要使用一个TileLayout

的小组
<s:Group width="100">
    <s:layout>
       <s:TileLayout />
    </s:layout>
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />      
    <s:Label text="Hello" /> 
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
    <s:Label text="Hi" />        
    <s:Label text="Hello" />
</s:Group>

如果磁贴布局不起作用,则必须创建自己的自定义布局类。

答案 1 :(得分:-1)

我已经创建了一个解决方案,可能不是最好的解决方案,但它对我有用。

关键是我希望有人可以点击标签并执行功能。

现在我有了这个:

<mx:Text id="box" width="100"></mx:Text>

在Actionscript中:

box.htmlText = box.htmlText + "<a href=\"event:hi\">Hi</a>";
box.htmlText = box.htmlText + "<a href=\"event:hello\">Hello</a>";
//etc (actually I've a for loop parsing some XML data)

box.addEventListener(TextEvent.LINK, executeFunction);

private function executeFunction(linkEvent:TextEvent):void {
    Alert.show(linkEvent.text); // will show a alert box with 'hi' or 'hello'
}

MX文本框内的文本完全保持在100像素范围内,尽可能多的文本在一条水平线上。