2009-08-03 5 views
2

私はアイテムのランダムなサイズの配列を持っています。私はRepeaterコンポーネントの各項目に1つのラベルを表示したいと思います。私は彼らが5列と必要な数の行を持つグリッドレイアウトで表示するようにします。どのようにFlex/ActionScriptでそれを行うのですか?グリッドレイアウトのFlex - Repeaterコンポーネント

私はまだ見たことのない別の方法があるかもしれないので、どんな提案も感謝します。ありがとう!

答えて

2

リピーターの代わりにタイルリストを使用します。次に例を示します。

http://blog.flexexamples.com/2007/09/28/using-the-flex-tilelist-classs-new-datachangeeffect-style-in-flex-3/

+0

アメン。 dataProvidersとitemRenderersが大好きです! –

+0

私はこの解決策が大好きではありませんが、私がやっていることでうまくいくでしょう。ありがとう!誰かがそれをやっている別の方法を知っている場合はまだ興味がありますか? – davidemm

+0

"愛"しないことがわからない?あなたが必要とする上記のソリューションに少しの機能が欠けていますか? – Shua

0

月遅すぎるが、私はTileListコントロールが私を与えることができなかった特定の機能を必要と同じような状況にしてきました。 see my question here


だから私のリピータグリッドは900個のピクセルの幅です。各列の幅は300ピクセル、各行の高さは31ピクセルで、間に1ピクセルの空白があります。合計で3列。

コード:

<mx:Repeater id="rptCities" dataProvider="{citiesArr}"> 
<mx:Canvas label="{rptCities.currentItem.city}" x="{rptCities.currentIndex%3 * 300}" y="{int(rptCities.currentIndex/3) * 32}" width="300" height="31"> 
<mx:Label text="{rptCities.currentItem.city}"/> 
</mx:Canvas> 
</mx:Repeater> 

ので、どのようにこのコードを読んでください:

市長の一部がリピータ内キャンバスに処理されます。ご覧のように、各キャンバスは幅300px(各列の幅)と高さ31pxです。モジュロで演奏することで、要素のx位置を定義することができます。

X = "{rptCities.currentIndex%3 * 300}"

最初のアイテム:0%3 == x位置:0

のはdataProviderの6つの項目があるとしましょう* 300

第二項目:1%3 == x位置:* 300 1

3番目の項目:2%3 == x位置:* 300 2

記載項目:3%3 == x位置:0 * 300

これは要素のx位置を処理します。私は32の間に1pxのスペースが必要なので、定数の値として定義した要素のy位置。数値を整数に変換すると、丸められた値が得られます(イタリック体の値は数値です。通常のフォントタイプはflexの考慮する整数です)

y = "{int(rptCities.currentIndex/3)* 32}"

最初の項目:0/3 == y位置:0 * 32

第二項目:1/3 == y位置:0×32(0.33)

3番目の項目:2/3 == y-位置:0 * 32(0。66)記載

項目:3/3 == y位置:0、Y:* 32 1

リピータは、記載項目でX方向及びY位置= Xである場合32であります2行目に


大変申し訳ありません。

関連する問題