Я использую следующий mxml-код для отображения списка некоторых данных. Я построил пользовательский рендер, который может иметь переменную высоту. Каждый раз, когда поступают новые данные, скроллер должен идти в конец списка. Я зарегистрировался на события, которые вызывают изменение массива.
Работает нормально, если высота предметов одинакова. Но если этого не происходит, скроллер идет чуть выше конца.
Если высота элемента из середины списка больше, то последние элементы не видны.
Можете ли вы дать мне несколько советов, чтобы решить эту проблему?
<s:Scroller width="100%" height="100%" id="scroller" horizontalScrollPolicy="off">
<s:DataGroup
id = "lstComments"
width = "100%"
height = "100%"
clipAndEnableScrolling = "true"
itemRenderer = "myCustomRenderer">
<s:layout>
<s:VerticalLayout
id = "vLayout"
useVirtualLayout = "true"
gap = "2"
variableRowHeight = "true"
horizontalAlign = "left"
verticalAlign = "top"
paddingTop = "0"
paddingBottom = "0" />
</s:layout>
</s:DataGroup>
</s:Scroller>
private function onArrayChange(event:CollectionEvent):void
{
switch(event.kind) {
case CollectionEventKind.ADD:
{
callLater(scrollDown);
break;
}
}
}
private function scrollDown():void
{
scroller.verticalScrollBar.value = scroller.viewport.contentHeight - scroller.viewport.height;
scroller.invalidateProperties();
}