Use the below code to detect the top of the scroll.
final ViewTreeObserver.OnScrollChangedListener onScrollChangedListener = new
ViewTreeObserver.OnScrollChangedListener() {
@Override
public void onScrollChanged() {
if (scrollview.getScrollY() == 0) {
swipeRefreshLayout.setEnabled(true);
} else
swipeRefreshLayout.setEnabled(false);
}
};
scrollview.setOnTouchListener(new View.OnTouchListener() {
private ViewTreeObserver observer;
@Override
public boolean onTouch(View v, MotionEvent event) {
if (observer == null) {
observer = scrollview.getViewTreeObserver();
observer.addOnScrollChangedListener(onScrollChangedListener);
} else if (!observer.isAlive()) {
observer.removeOnScrollChangedListener(onScrollChangedListener);
observer = scrollview.getViewTreeObserver();
observer.addOnScrollChangedListener(onScrollChangedListener);
}
return false;
}
});