У меня есть панель mxml, в которой я использую повторитель. Размер панели можно изменять по горизонтали, и я хотел бы, чтобы повторяющиеся компоненты изменяли размеры вместе с панелью. Вот упрощенный пример того, как все выглядит:
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" ...>
<!-- scripts and some controls -->
<mx:VBox width="100%">
<core:Repeater width="100%" dataProvider="model">
<ns1:MyItemRenderer width="100%" />
</core:Repeater>
</mx:VBox>
</mx:TitleWindow>
При изменении размера компонента ширина повторяющихся элементов не изменяется.
Там также есть кнопки и обработчики событий, которые добавляют и удаляют элементы из модели. Когда это будет сделано, повторитель обновится, чтобы отобразить правильное количество элементов, и все элементы будут правильно изменены.
Мне не удалось изменить размеры элементов при изменении размера корневой панели. Я вижу, что VBOx вокруг ретранслятора получает событие изменения размера. Однако повторяющиеся предметы не получают событие. Я попытался передать событие изменения размера повторяющимся элементам вручную из обработчика изменения размера, который я подключил к VBox, но это не помогло.
Я также попытался добавить и удалить фиктивный элемент из ArrayCollection, который является dataProvider (потому что это вызывает правильное изменение размера в противном случае, как упомянуто выше). Однако выполнение этого в обработчике изменения размера VBox просто приводит к тому, что ретранслятор не отображается любые предметы вообще.
Есть ли какой-нибудь способ получить элементы в повторителе, чтобы изменить их размер в контейнере?
ItemRenderer, который я использую, корректно изменяет размеры при использовании в mx: List. Он построен таким образом, что он может работать как со свойством данных, установленным контейнером List, так и с getRepeaterItem () при использовании в Repeater. В этом конкретном случае я не могу использовать список в качестве контейнера из-за того, как он ведет себя в отношении управления его высотой через свойства rowCount, height и maxHeight, что не работает для меня в данном конкретном случае (я вам подробнее).