Scrollen Sie eine ListView um Pixel in Android

7

Ich möchte die a ListView in Android nach Anzahl der Pixel scrollen. Zum Beispiel möchte ich die Liste 10 Pixel nach unten scrollen (so dass das oberste Element der Liste die obersten 10 Pixelzeilen enthält).

Ich dachte, die offensichtlich sichtbaren Methoden scrollBy oder scrollTo auf ListView würden die Aufgabe erledigen, aber sie tun es nicht, stattdessen scrollen sie die ganze Liste falsch (Tatsächlich gibt die getScrollY immer Null zurück, obwohl ich habe die Liste mit meinem Finger gescrollt.)

Was ich mache ist, dass ich Trackball-Ereignisse aufnehme und die Listenansicht reibungslos durch die Bewegung des Trackballs scrollen möchte.

    
yuku 03.03.2010, 21:24
quelle

5 Antworten

10

Die unterstützte Methode zum Scrollen eines ListView Widgets ist:

mListView.smoothScrollToPosition(position);

Ссылка

Da Sie jedoch ausdrücklich erwähnt haben, dass Sie die Ansicht vertikal versetzen möchten, müssen Sie Folgendes aufrufen:

mListView.setSelectionFromTop(position, yOffset);

Ссылка

Beachten Sie, dass Sie auch smoothScrollByOffset(yOffset) verwenden können. Es wird jedoch nur auf API & gt; = 11

unterstützt

Ссылка

    
Sam 13.05.2011, 06:14
quelle
10

Wenn Sie sich die Quelle für die Methode scrollListBy () ansehen, die in API 19 hinzugefügt wurde, sehen Sie, dass Sie die Paketbereichs trackMotionScroll -Methode verwenden können.

%Vor%     
enl8enmentnow 08.12.2014 21:08
quelle
3

Hier ist ein Code aus meiner ListView Unterklasse. Es kann leicht angepasst werden, damit es im Aktivitätscode verwendet werden kann.

getListItemsHeight() gibt die gesamte Pixelhöhe der Liste zurück und füllt ein Array mit vertikalen Pixel-Offsets jedes Elements. Während diese Information gültig ist, gibt getListScrollY() die aktuelle vertikale Pixel-Bildlaufposition zurück, und scrollListToY() scrollt die Liste zur Pixelposition. Ändert sich die Größe oder der Inhalt der Liste, muss getListItemsHeight() erneut aufgerufen werden.

%Vor%     
dslamnig 22.10.2012 01:04
quelle
1

Vorerst ist ListViewCompat wahrscheinlich eine bessere Lösung.

%Vor%     
ddg 12.07.2016 13:00
quelle
0

Wenn Sie um Pixel verschieben möchten, können Sie dies verwenden

%Vor%

das funktioniert für gerade mit massiven Headern

    
Maurice 21.07.2015 23:19
quelle

Tags und Links