49 votes

Android smoothScrollPar mal se comporter

J'ai un ListView que je suis appelant smoothScrollBy() sur. 95% du temps, l' smoothScrollTo() se comporte comme prévu. Cependant il y a des fois qu'il ne finisse pas dans la place!!! J'ai vérifié que je suis lui donnant la même valeur. Je remarque que le scrolling n'est pas si lisse, quand les erreurs sont faites, mais il n'y a pas d'autres tâches que ma demande est la scène que je voudrais avoir le contrôle sur.

Je ne suis pas tout à fait sûr de ce qui se passe dans le fond, mais une probable est la collecte des ordures.

Une précision de 95% n'est pas assez bon dans cette situation. Je suis va falloir mettre en place une sorte de mécanisme de correction pour s'assurer de l' ListView des terres de l'endroit correct dans ces instances.

Est-il une meilleure façon d'utiliser smoothScrollBy() autres que simplement en appelant view.smoothScrollBy(distance, time);?

6voto

Arun MG Points 1312

parfois ce sera à cause du problème de timing. Lorsque les vues sont ajoutées à votre liste et le temps que vous faites

 view.smoothScrollBy(distance, time);
 

le listview ou l'interface utilisateur n'a toujours pas besoin d'être rafraîchi. Donc, faites ceci dans le fil de discussion des vues avec un délai spécifique. Par exemple.

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

6voto

mipreamble Points 546

Essayez certains de ces:

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

  1. Attribuer listview hauteur (android:layout_height) à match_parent ou fill_parent.

  2. Si votre affectation d'une carte dans un thread de travail. N'effectuez aucune des actions d'INTERFACE utilisateur dans le fil.

Si elles ne permettent pas de résoudre le problème. Merci de poster le code où vous attribuez à la carte de l'affichage de la liste le cas échéant. Ou le code pertinent.

Aussi le xml de mise en page de code.

Espérons que cette aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X