I have different colors for different lines in the ListView, by setting the color of textbox depending on the line number (in getView() of Adapter). Now when I manually scro
ListView#scrollTo
doesn't scroll the list contents. (It's a standard View method, and not specific to lists at all: it scrolls the ListView view itself.)
Instead, try using ListView#setSelectionFromTop(0, int y)
to scroll.
API 19+ has a ListView#scrollListBy(int y)
method if you're programming for KitKat and up.
In our project ListView#setSelectionFromTop(0, int y)
does not have any effect. So we hacked this in compat-style:
class Hacks {
static {
Method trackMotionScroll = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
try {
trackMotionScroll = AbsListView.class
.getDeclaredMethod("trackMotionScroll", int.class, int.class);
trackMotionScroll.setAccessible(true);
} catch (NoSuchMethodException e) {
Exceptions.crash(e);
}
}
listViewTrackMotionScroll = trackMotionScroll;
}
public static void scrollListBy(ListView listView, int y) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
listView.scrollListBy(y);
} else {
try {
listViewTrackMotionScroll.invoke(listView, -y, -y);
} catch (Exception e) {
Exceptions.crash(e);
}
}
}
}