Faire défiler une ListView par pixels Android
Je veux faire défiler l'un ListView
dans Android par le nombre de pixels. Par exemple je veux faire défiler la liste de 10 pixels vers le bas (de sorte que le premier élément de la liste a son top 10 des pixels des lignes cachées).
J'ai pensé que l'visibles de toute évidence scrollBy
ou scrollTo
méthodes sur ListView pour faire le travail, mais ils ne sont pas, au lieu de cela ils faire défiler toute la liste à tort (En fait, le getScrollY
toujours revenir à zéro, même si j'ai fait défiler la liste à l'aide de mon doigt).
Ce que je fais c'est que je suis la capture de la boule de commande des événements et je veux faire défiler la liste en douceur en fonction du mouvement de la boule de commande.
scrollby
est censé faire. Pourriez-vous poster votre code Java?je pense que scrollBy en quelque sorte les dégâts de la listView. j'ai fait des expériences avec celui-là aussi. il déplace les événements tactiles par le scrollBy montant.... donc, si vous définissez l'axe de défilement par 10 par exemple le prochain événement de touche sur la liste sera marché de 10 pixels en dessous de la actuall touch emplacement.. désolé je ne connais pas de meilleur moyen, mais peut-être qu'il est un moyen de compenser pour ce genre de choses avec onTouch méthode sur la liste.
OriginalL'auteur Randy Sugianto 'Yuku' | 2010-03-03
Vous devez vous connecter pour publier un commentaire.
La façon de faire défiler une
ListView
widget est:mListView.smoothScrollToPosition(position);
http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPosition(int)
Cependant puisque vous avez mentionné spécifiquement que vous souhaitez pour compenser la vue à la verticale, vous devez appeler:
mListView.setSelectionFromTop(position, yOffset);
http://developer.android.com/reference/android/widget/ListView.html#setSelectionFromTop(int,%20int)
Notez que vous pouvez également utiliser
smoothScrollByOffset(yOffset)
. Toutefois, il est pris en charge uniquement sur les API >= 11http://developer.android.com/reference/android/widget/ListView.html#smoothScrollByOffset(int)
+1 pour
setSelectionFromTop
OriginalL'auteur Sam
Si vous regardez le code source pour le scrollListBy() ajout de la méthode dans l'api 19 vous verrez que vous pouvez utiliser le package étendue
trackMotionScroll
méthode.Tu es la bienvenue, content que cela a été utile.
OriginalL'auteur enl8enmentnow
Voici le code de mon
ListView
sous-classe. Il peut facilement être adapté de sorte qu'il peut être utilisé dans le code d'Activité.getListItemsHeight()
renvoie le total de pixels de la hauteur de la liste, et remplit un tableau vertical avec les décalages des pixels de chaque élément. Bien que cette information est valide,getListScrollY()
retourne la verticale en pixels position de défilement, etscrollListToY()
fait défiler la liste à la position en pixels.Si la taille ou le contenu de la liste des changements,
getListItemsHeight()
doit être appelé de nouveau.OriginalL'auteur dslamnig
Pour l'instant, ListViewCompat est sans doute une meilleure solution.
OriginalL'auteur ddg
si vous voulez déplacer en pixels alors u peut utiliser ce
cela fonctionne, même pour ceux avec massive des en-têtes de
OriginalL'auteur Maurice