Flex DataGroup устанавливает высоту рендера элемента - PullRequest
0 голосов
/ 28 ноября 2011

Последние несколько дней я играл с рендерами для мобильного приложения.Я создаю сетчатый рендерер, который имеет легкие колонки для мобильного приложения.Это что-то вроде сетки данных бедного человека.Макет в порядке.Вопрос, который у меня возникает, заключается в управлении высотой каждой строки в списке.

Когда вызывается measure (), я устанавливаю measureHeight равным:

  measuredHeight = getElementPreferredHeight(ld) + verticalPadding; 

, где вертикальное заполнение равно:

  var verticalPadding:Number = getStyle("paddingTop") + getStyle("paddingBottom");

Когда я отлаживаю на рабочем столе, измеренная высота равна 12, а на устройстве (Motorola Atrix) - 12.

Но когда вызывается layoutContents, значение unscaledHeight равночисло намного больше, чем мое измеренное значение высоты (44 на устройстве, 66 при работе на рабочем столе), что приводит к появлению большего количества вертикальных пробелов вокруг каждого элемента, чем мне хотелось бы.

Я уверен, что мне не хватаетчто-то, но как мне контролировать эту высоту строки?Я использовал Datagroup для этого конкретного примера, но в некоторых играх я использовал простой список, у меня была та же проблема.Где-то система переопределяет мой измеренный рост другим значением.

Есть идеи?

Рэнди

1 Ответ

1 голос
/ 28 ноября 2011

Являются ли ваши сегменты кода частью средства визуализации или частью группы данных? Или где-то еще?

Во Flex родитель всегда отвечает за размер своих детей. В случае средств визуализации DataGroup является родителем, а экземпляры средства визуализации - дочерними. Таким образом, независимо от того, какой размер вы указываете в itemRenderer, он не может быть использован. measureHeight и measureWidth - это просто предложения, которые родительский контейнер может игнорировать - или нет - в зависимости от его реализации.

Вы можете использовать typItem , чтобы помочь рассчитать размер строки по умолчанию.

Вы также можете создать собственный класс макета для определения размера и расположения ваших детей.

При использовании VerticalLayout ширина будет фиксированной, если вы не установите variableRowHeight в значение true. Дополнительная информация в документах . Вы также можете установить свойство rowHeight в классе макета, чтобы указать высоту для всех строк.

...