Как определить положение прокрутки вложенного scrollview андроида внизу?

Я просто хочу определить положение прокрутки вложенного scrollview андроида внизу и функцию вызова. Мой код:

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"); } } }); 

Но totalheight не тот же остроумие MAX ScrollY. Как это исправить?

Solutions Collecting From Web of "Как определить положение прокрутки вложенного scrollview андроида внизу?"

Установите setOnScrollChangeListener в параметрах NestedScrollView чтобы получить

  • 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.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) { Log.i(TAG, "BOTTOM SCROLL"); } } }); } 

Я знаю, что поздно, но … попробуй.

 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"); } } }); 

Счастливое кодирование.