2009-08-03 4 views
2

난 임의의 크기의 항목 배열이 있습니다. Repeater 구성 요소에 각 항목에 대해 하나의 레이블을 표시하고 싶습니다. 나는 그들이 필요에 따라 5 개의 열과 많은 행을 가진 격자 레이아웃으로 표시되기를 원한다. Flex/ActionScript에서 어떻게 할 수 있습니까?플렉스 - 그리드 레이아웃이있는 리피터 구성 요소

어쩌면 내가 아직 보지 못했던 다른 방법이있을 수 있습니다. 따라서 어떤 제안도 환영합니다. 감사!

답변

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- 위치 : 1 * 300

번째 항목 : 2 % 3 ==의 X- 위치 : 2 항 * 300

아이템 : 3 % 3 == x 위치 : 0 * 300

이는 요소의 x 위치를 처리합니다. 요소의 y- 위치 사이에 1px 공간을 원하기 때문에 32를 상수 값으로 정의했습니다. 숫자를 정수로 변환하면 반올림 된 값을 얻습니다 (기울임 꼴 값은 숫자 값이고 일반 글꼴 유형은 flex가 고려하는 정수입니다)

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

제 상품 : 0/3 == Y 위치 0 * 32

초 항목 : 1/3 == Y 위치 0 * 32 (0.33)

번째 항목 : 2/3 == y- 위치 : 0 * 32 (0.66)

는 앞뒤로 항목

: 3/3 == Y 위치 0 및 y : 32 인 1 *

중계기가 기재된 항목에 32 X 축 및 Y 위치는 X = 두 번째 행에


큰 대답은 죄송합니다.