// {@link ScrollViewWithNotified#ScrollListener} methods.
 @Override
 public void notifyScrollChanged(
     final int scrollX, final int scrollY, final int oldX, final int oldY) {
   if (PAGINATION) {
     mScroller.forceFinished(true /* finished */);
     mScrollView.removeCallbacks(mScrollTask);
     final int currentTop = mScrollView.getScrollY();
     final int pageHeight = getKeyboard().mBaseHeight;
     final int lastPageNo = currentTop / pageHeight;
     final int lastPageTop = lastPageNo * pageHeight;
     final int nextPageNo = lastPageNo + 1;
     final int nextPageTop = Math.min(nextPageNo * pageHeight, getHeight() - pageHeight);
     final int scrollTo =
         (currentTop - lastPageTop) < (nextPageTop - currentTop) ? lastPageTop : nextPageTop;
     final int deltaY = scrollTo - currentTop;
     mScroller.startScroll(0, currentTop, 0, deltaY, 300);
     mScrollView.post(mScrollTask);
   }
 }
 public void setScrollView(final ScrollViewWithNotifier scrollView) {
   mScrollView = scrollView;
   scrollView.setScrollListener(this);
 }