+-
如何在底部检测滚动nestedscrollview android的位置?
我只是想在底部检测滚动nestedscrollview android的位置,以及调用函数.
我的代码是:

scroll.getViewTreeObserver()
      .addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
           @Override
           public void onScrollChanged() {
               int totalHeight = scroll.getChildAt(0).getHeight();
               int scrollY = scroll.getScrollY();
               Log.v("position", "totalHeight=" + totalHeight + "scrollY=" + scrollY);
               if (scrollY==totalHeight) {
                   getPlaylistFromServer("more");
               }
           }
      });

但总高度与MAX ScrollY不同.怎么解决?

最佳答案
获取NestedScrollView参数中的setOnScrollChangeListener

> NestedScrollView v(带滚动的父级)
> int scrollY
> int oldScrollY

要检测偏移是否在底部,有必要获取内容高度v.getChildAt(0).getMeasuredHeight()的值,并比较当前滚动的父高度,如果你有相同的值,它意味着它已经到了终点.

您可以使用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");
           }
       }
    });
}
点击查看更多相关文章

转载注明原文:如何在底部检测滚动nestedscrollview android的位置? - 乐贴网