9

I have used scrollview in my Android app using activity_main.xml. The scroll is working perfectly. But the thing is i need to add a Scroll to top button so that if the user starts scrolling the button should be visible like the link below..

http://webdesignerwall.com/demo/scroll-to-top/scrolltotop.html?

I need to do this in Android..

Jessie Ka
  • 131
  • 2
  • 4

2 Answers2

10

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;
        }
    });
Tarun Gupta
  • 297
  • 2
  • 11
8
 scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
            @Override
            public void onScrollChanged() {
                if (scrollView != null) {
                    if (scrollView.getScrollY()==0) {
                        Toast.makeText(getContext(),"top",Toast.LENGTH_SHORT).show();
                    } else {

                    }
                }
            }
        });
nikhil
  • 81
  • 1
  • 3