플렉스 - 그리드 레이아웃이있는 리피터 구성 요소
-
11-07-2019 - |
문제
나는 무작위로 크기의 항목이 있습니다. 리피터 구성 요소에 각 항목에 대해 하나의 레이블을 표시하고 싶습니다. 나는 그들이 5 개의 열과 필요에 따라 많은 행이있는 그리드 레이아웃으로 표시되기를 원합니다. Flex / Actionscript에서 어떻게합니까?
어쩌면 내가 아직 보지 못했던 또 다른 방법이있을 수 있으므로 어떤 제안도 감사합니다. 감사!
해결책
리피터 대신 타일 목록을 사용합니다. 예는 다음과 같습니다.
다른 팁
한 달 늦었지만 Tilelist가 나에게 줄 수없는 특정 기능이 필요한 상황에 처해있었습니다.여기 내 질문을 참조하십시오
내 리피터 그리드의 너비는 900 픽셀입니다. 각 열은 너비가 300px이고 각 행은 높이가 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- 위치를 정의 할 수 있습니다.
DataProvider에 6 개의 항목이 있다고 가정 해 봅시다.
x = "{rptcities.currentindex%3 * 300}"
첫 번째 항목 : 0%3 == X- 위치 : 0*300
두 번째 항목 : 1%3 == X- 위치 : 1*300
세 번째 항목 : 2%3 == X- 위치 : 2*300
전면 항목 : 3%3 == X-Position : 0*300
그것은 요소의 x- 위치를 처리합니다. 내가 32를 1px 공간을 원하기 때문에 32를 일정한 값으로 정의한 요소의 y-position. 숫자를 정수로 변환하면 반올림 값을 얻습니다 (이탤릭체의 값은 숫자 값입니다. 정상 FontType는 Flex가 고려하는 정수입니다)
y = "{int (rptcities.currentIndex/3) * 32}"
첫 번째 항목 : 0/3 == y-position : 0*32
두 번째 항목 : 1/3 == y-position : 0*32 (0.33)
세 번째 항목 : 2/3 == y-position : 0*32 (0.66)
앞으로 항목 : 3/3 == y-position : 1*32
리피터가 네 번째 항목에있을 때 x-와 y-position = x : 0 및 y : 32는 두 번째 '행'에 있습니다.
다소 큰 대답에 대해 죄송합니다.