Flex - компонент повторителя с разметкой сетки
-
11-07-2019 - |
Вопрос
У меня есть массив элементов произвольного размера. Я хотел бы отобразить одну метку для каждого элемента в компоненте Repeater. Я хочу, чтобы они отображались в виде сетки с 5 столбцами и таким количеством строк, сколько необходимо. Как мне это сделать во Flex / ActionScript?
Может быть, есть другой способ сделать это, которого я еще не видел, поэтому любые предложения приветствуются. Спасибо!
Решение
Я бы использовал список плиток вместо повторителя. Вот пример:
Другие советы
на месяц позже, но я попал в ту же ситуацию, когда мне требовались определенные функции, которые мне не мог предоставить список листов. см. мой вопрос здесь
<Ч>Итак, моя сетка репитера имеет ширину 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-позицию элемента. Р>
скажем, у провайдера данных есть 6 элементов:
x = " {rptCities.currentIndex% 3 * 300} "
первый элемент: 0% 3 == позиция x: 0 * 300
второй элемент: 1% 3 == позиция x: 1 * 300
третий элемент: 2% 3 == позиция x: 2 * 300
четвертый элемент: 3% 3 == позиция x: 0 * 300
Это заботится о x-положении элементов. Y-позиция элементов, которые я определил 32 как постоянное значение, потому что я хочу промежуток 1px между ними. Преобразовав число в целое число, вы получите округленные значения (значения, выделенные курсивом, являются числовыми значениями, нормальный тип шрифта - это целое число, которое учитывает 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: 1 * 32
когда повторитель находится на четвертом элементе, x- и y-позиция = x: 0 и y: 32, который находится во второй «строке»
<Ч>Извините за довольно большой ответ.