yuku yuku - 4 months ago 13
Android Question

Scroll a ListView by pixels in Android

I want to scroll the a

ListView
in Android by number of pixels. For example I want to scroll the list 10 pixels down (so that the first item on the list has its top 10 pixel rows hidden).

I thought the obviously visible
scrollBy
or
scrollTo
methods on ListView would do the job, but they don't, instead they scroll the whole list wrongly (In fact, the
getScrollY
always return zero even though I have scrolled the list using my finger.)

What I'm doing is I'm capturing Trackball events and I want to scroll the listview smoothly according to the motion of the trackball.

Sam Sam
Answer

The supported way to scroll a ListView widget is:

mListView.smoothScrollToPosition(position);

http://developer.android.com/reference/android/widget/AbsListView.html#smoothScrollToPosition(int)

However since you mentioned specifically that you would like to offset the view vertically, you must call:

mListView.setSelectionFromTop(position, yOffset);

http://developer.android.com/reference/android/widget/ListView.html#setSelectionFromTop(int,%20int)

Note that you can also use smoothScrollByOffset(yOffset). However it is only supported on API >= 11

http://developer.android.com/reference/android/widget/ListView.html#smoothScrollByOffset(int)

Comments