how to detect the position of the scroll nestedscrollview android at the bottom? how to detect the position of the scroll nestedscrollview android at the bottom? android android

how to detect the position of the scroll nestedscrollview android at the bottom?


Set setOnScrollChangeListener in a NestedScrollView params to get

  • NestedScrollView v (parent with scroll)
  • int scrollY
  • int oldScrollY

To detect whether the offset is at the bottom, it is necessary to obtain the value of content height v.getChildAt(0).getMeasuredHeight() and compare the current scroll over the height of the parent, if you have the same value , it means that it has reached the end.

You can get the height with parent view with v.getMeasuredHeight()

NestedScrollView scroller = (NestedScrollView) findViewById(R.id.myScroll);if (scroller != null) {    scroller.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {        @Override        public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {            if (scrollY > oldScrollY) {                Log.i(TAG, "Scroll DOWN");            }            if (scrollY < oldScrollY) {                Log.i(TAG, "Scroll UP");            }            if (scrollY == 0) {                Log.i(TAG, "TOP SCROLL");            }           if (scrollY == ( v.getMeasuredHeight() - v.getChildAt(0).getMeasuredHeight() )) {               Log.i(TAG, "BOTTOM SCROLL");           }       }    });}


I know it's late but.. try this way.

scroll.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {    @Override    public void onScrollChanged() {            View view = (View) scroll.getChildAt(scroll.getChildCount() - 1);            int diff = (view.getBottom() - (scroll.getHeight() + scroll                    .getScrollY()));            if (diff == 0) {                getPlaylistFromServer("more");            }              }});

Happy Coding..


Webserveis answered right, but it needs a little bit of changes in onScrollChange (override method), like this:

if (scrollY === v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight()) {   // end of the scroll view}

Kotlin:

if (scrollY == v.getChildAt(0).measuredHeight - v.measuredHeight) {    // end of the scroll view}