我正在使用以下 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();
}