Android smoothScrollBy se comportant mal

J’ai un ListView lequel smoothScrollBy() . 95% du temps, smoothScrollTo() se comporte comme prévu. Cependant, il arrive parfois qu’elle ne se retrouve pas à l’endroit prévu! J’ai vérifié que je lui donne la même valeur. Je remarque que le défilement en douceur n’est pas si fluide lorsque les erreurs sont commises, mais il n’y a pas d’autres tâches que mon application exécute et sur lesquelles j’aurais le contrôle.

Je ne suis pas tout à fait sûr de ce qui se passe en arrière-plan, mais un coupable est probablement la collecte des ordures.

Une précision de 95% n’est pas suffisante dans cette situation. Je vais devoir implémenter une sorte de mécanisme de correction pour m’assurer que ListView se place au bon endroit dans ces instances.

Existe-t-il un meilleur moyen d’utiliser smoothScrollBy() que d’appeler simplement view.smoothScrollBy(distance, time); ?

Essayez quelques-unes d’entre elles:

Listview a son propre mécanisme de défilement. Il défile lorsque le contenu est ajouté.

  1. Atsortingbuez la hauteur de la vue liste (android: layout_height) à match_parent ou fill_parent.

  2. Si vous atsortingbuez un adaptateur dans un thread de travail. N’effectuez aucune action d’interface utilisateur dans le thread.

Si cela ne résout pas le problème. S’il vous plaît poster le code où vous atsortingbuez l’adaptateur à la vue liste, le cas échéant. Ou le code correspondant.

Également le code de présentation xml.

J’espère que cela t’aides.

parfois ce sera à cause du problème de timing. Quand les vues sont ajoutées à votre listview et l’heure que vous faites

 view.smoothScrollBy(distance, time); 

la liste ou l’interface utilisateur n’ont toujours pas besoin d’être rafraîchie. Donc, faites cela dans les vues post thread avec un délai spécifique. Par exemple.

 view.postDelayed(new Runnable{ view.smoothScrollBy(distance, time); },1000);