在Flex中,如何将列表包装到列中?

时间:2009-11-12 21:11:10

标签: flex actionscript-3 adobe mxml

如何使List控件环绕到第二列(或多列)?谢谢,让我知道如果有一个解决方案,使用List控件或其他一些Flex控件。

例如,如果您有一个包含42个项目的列表,但我想将列表的高度限制为20个项目;然后我没有一个包含42个项目的列表,而是让那个项目列表看起来相当于3个相邻的列表:第一个包含20个项目,第二个包含20个项目,第三个包含2个项目(其中代表42项的原始清单)。

这个问题看起来很相似,但它在ColdFusion中:
Wrapping lists into columns

6 个答案:

答案 0 :(得分:1)

使用TileList并更改方向变量是我提出的最佳解决方案。

答案 1 :(得分:0)

您可以为列表项使用Repeater和简单的基于Label的itemRenderer,并避免完全使用列表。如果将它全部包装在自定义控件中,您可以提供与List相同的API,这样您的消费者就永远无法区分它们。

答案 2 :(得分:0)

我认为你正在寻找第二排,正如其他人所指出的那样。将wordWrap设置为true或使用不同的项目渲染器是完成它的最佳方法,但使用自定义项目渲染器可以让您更好地控制对象的显示方式。

答案 3 :(得分:0)

我建议创建一个包含可变数量列表的自定义组件。此自定义组件可以具有名为“maxListHeight”的属性。它还可以具有“dataProvider”属性。此自定义组件将生成一组水平对齐的列表。自定义组件生成的列表数量为:floor(dataProvider.length / maxListHeight)+1。除了生成的最后一个列表之外的所有列表都将具有maxHeight的listHeight;生成的最后一个列表将具有listHeight:dataProvider.length%maxListHeight。

这应该可行但是管理向masterList添加和删除项目应该需要一些额外的工作(如果没有从后面添加/删除它)。这还需要实例化多个列表而不是一个。

答案 4 :(得分:-1)

itemRenderer控件的默认ListTextInput,仅支持单行文字。请改用TextArea

<mx:List itemRenderer="mx.controls.TextArea"/>

答案 5 :(得分:-1)

尝试在List上设置以下两个属性:

wordWrap=true
variableRowHeight=true