J'utilise le code mxml suivant pour afficher une liste de certaines données. J'ai construit un moteur de rendu personnalisé qui peut avoir une hauteur variable. Chaque fois qu'une nouvelle donnée arrive, le défileur devrait aller à la fin de la liste. Je me suis inscrit aux événements qui déclenchent un changement de tableau.Spark: régler automatiquement scroller à la fin d'une liste ne fonctionne pas correctement
Cela fonctionne très bien si la hauteur des éléments est la même. Mais si cela ne se produit pas, le scroller va un peu au-dessus de la fin.
Si la hauteur d'un élément à partir du milieu de la liste est plus grande, les derniers éléments ne sont pas visibles.
Pouvez-vous me donner quelques conseils pour résoudre ce problème?
<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();
}