2014-05-07 9 views
1

I asked avant environ OverScroll dans ListView. Par défaut, overScroll ne fonctionne pas sur de nombreux appareils (par exemple: Samsung Galaxy 2, HTC One X). Donc j'ai fait OverScrollListViewAndroid overscroll pour ScrollView

Mais maintenant, il fallait faire la même chose pour ScrollView. J'ai fait l'astuce pour le top oversoll (en utilisant le nombre positif dans overScrollBy). Mais quand j'essaie de faire la même chose pour le bas (en utilisant un nombre négatif dans overScrollBy), défilement ScrollView défilement vers la première position.

Quelqu'un peut-il dire pourquoi?

P.S. J'ai également essayé this. Mais même en haut (ou en bas) la position de la barre de défilement s'affiche quelque part au milieu. Cela confond l'utilisateur ...

Répondre

1

Ok, je pense que je l'ai fait.

Mais c'est vraiment étrange.

j'avais méthode pour que j'appelle Défilement prolongé dans ACTION_MOVE:

private void pullDown(int deltaY, int lastY) { 
    overScrollBy(0, mSlowEffect ? (int)getOverScrollYWithSlow(deltaY) : deltaY, 0, lastY, 5, 5, 0, mMaxYOverscrollDistance, true); 
} 

Pour ListView pour i Défilement prolongé juste mis deltaY quelque chose comme pullDown(lastScroll, 0);

Il fonctionne à la fois: en haut et en bas Défilement prolongé.

Mais pour ScrollView, cela ne fonctionne pas pour le surréglage du fond. Donc, nous devrions envoyer à cette méthode également la position actuelle de défilement, quelque chose comme pullDown(lastScroll , lastY);

Je partage le code entier sur Github, si quelqu'un intéressé.