For scrolling I use the driver’s swipe method, which allows you to specify the duration of the swipe. On Android I have to set this to a much higher number [than iOS] otherwise I see the behavior that you are.
swipe(startX, startY, endX, endY, duration);
You can pull your values from the locations of your elements.
To swipe horizontally, your Y values will be the same and you’ll find it useful to actually imagine your finger swiping to get the proper X values (to me the values are the opposite of what my brain thinks - I think in terms of the elements moving as opposed to my finger).
I’ve read that swipe will be deprecated in Java 5, but it works for me now so I’m going to stick with it.