2009-11-12 54 views
0

如何使List控件繞回第二列(或多列)?謝謝,讓我知道是否有與List控件或其他Flex控件的解決方案。例如,如果您有一個包含42個項目的列表,但我想將列表的高度限制爲20個項目;那麼我不會讓一個列表中的42個項目一直向下,而是讓這個項目列表看起來像是3個相鄰列表的等價物:第一個包含20個項目,第二個包含20個項目,第三個包含2個項目(其中代表42個項目的原始列表)。在Flex中,如何將列表包裝到列中?

這個問題似乎類似,但它是在ColdFusion的:
Wrapping lists into columns

+0

你的意思是第二行嗎? – 2009-11-12 22:14:41

+0

尋找wordwrap? – Amarghosh 2009-11-13 05:16:09

+0

它與「wordwrap」類似,但不是與文本標籤嚴格相關的wordwrap,因此它跨越兩行而不是一行(並可能避免截斷文本)。 – 2009-11-13 05:34:57

回答

1

使用TileList並更改方向變量是我提出的最佳解決方案。

0

你可以使用一箇中繼器和基於itemRenderer的一個簡單的標籤列表項,並完全避免使用列表。如果您將其全部包裝在自定義控件中,則可以提供與List相同的API,以便您的消費者永遠不會分辨出差異。

-1

List控件的默認itemRendererTextInput,它只支持單行文本。改爲使用TextArea

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

嘗試在列表設置以下兩個屬性:

wordWrap=true 
variableRowHeight=true 
0

我認爲你正在尋找一個第二排,正如其他人指出。將wordWrap設置爲true或使用不同的項目渲染器是最好的方式來完成它,但使用自定義項目渲染器將使您更好地控制對象的顯示方式。

+0

我希望誰投下了這個答案會告訴我們爲什麼。我認爲這個解決方案有效。 – 2009-11-14 00:31:31

0

我建議創建一個包含可變數量的列表的自定義組件。這個自定義組件可以有一個名爲「maxListHeight」的屬性。它也可以有一個「dataProvider」屬性。這個自定義組件將產生一組水平對齊的列表。自定義組件生成的列表數量爲:floor(dataProvider.length/maxListHeight)+1。除了最後生成的列表之外,其他所有列表都會有maxListHeight的listHeight;生成的最後一個列表將具有listHeight:dataProvider.length%maxListHeight。

這應該可以工作,但管理項目添加和移除到masterList應該需要一些額外的工作(如果它不被附加/從後面移除)。這也需要實例化多個列表而不是一個。

+0

這個想法應該可行,但我不喜歡它必須依靠實例化多個相鄰列表。 – 2009-11-13 19:20:27

+0

我也不喜歡這個解決方案,因爲那時你還需要添加邏輯來取消選擇所有其他list.selectedItem,當你從生成列表中選擇一個項目。 – 2009-11-13 19:40:13