2016-03-21 15 views
15

मैं बस नीचे स्क्रॉल nestedscrollview एंड्रॉइड की स्थिति का पता लगाने के लिए, और कॉल समारोह के लिए पता लगाना चाहता हूँ। मेरी कोड है:नीचे स्क्रॉल nestedscrollview एंड्रॉइड की स्थिति का पता लगाने के लिए कैसे?

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 ही नहीं बुद्धि मैक्स scrolly। इसे कैसे जोड़ेंगे ?

+0

उपयोग 'ViewCompat.canScrollVertically (देखें वी, पूर्णांक दिशा)' –

उत्तर

3

मुझे पता है कि यह देर हो चुकी है लेकिन .. इस तरह से प्रयास करें।

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

मुबारक कोडिंग ..

47

सेट setOnScrollChangeListener एक NestedScrollView पैरामीटर में

  • NestedScrollView वी (स्क्रॉल के साथ माता-पिता)
  • पूर्णांक scrolly
  • पूर्णांक 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"); 
      } 
     } 
    }); 
} 
+2

सही जवाब माता पिता को देखने के साथ ऊंचाई प्राप्त कर सकते हैं, धन्यवाद। – exshinigami

+1

उपयोगकर्ता कैसे स्क्रॉल करना बंद कर देता है जब यह निष्क्रिय हो जाता है? –

+0

क्या कोई यह बताने में सक्षम होगा कि यह लाइन क्यों काम करती है? 'अगर (scrollY == (v.getChildAt (0) .getMeasuredHeight() - v.getMeasuredHeight())) 'यह कैसे है कि' NestedScrollView' की मापी गई ऊंचाई सामग्री की ऊंचाई से छोटी है, भले ही 'NestedScrollView माता पिता है? – coolDude

संबंधित मुद्दे