8

ऐसा लगता है कि सैमसंग ने अपने ओवरक्रॉल को अक्षम कर दिया (शायद ऐप्पल सूट के कारण)।सैमसंग गैलेक्सी एस 2 2.3.5+ कॉल नहीं कर रहा है स्क्रॉलबी()

मैं जब स्क्रोलर यह अंत है तक पहुँच जाता है overScrollBy बुलाया जा रहा है एक राय यह है कि ScrollView प्रदान करता है और ओवरराइड करता है

protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY,int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) 
    { 
    ... 
    return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, 0, metrics.widthPixels,isTouchEvent); 
    } 

(और निश्चित रूप से अप जिंजरब्रेड) हर दूसरे डिवाइस पर के एक कार्यान्वयन है, और उपयोगकर्ता कर सकते हैं वास्तव में दृश्य oversrroll)।

एंड्रॉइड 2.3.5+ सैमसंग ने कुछ प्रकार की तंत्र को कार्यान्वित किया है जो ओवरस्क्रोल को पूरी तरह से अक्षम करता है (न केवल उनके ओवरक्रॉल कार्यान्वयन, बल्कि एंड्रॉइड के कार्यान्वयन), और हर बार जब कोई उपयोगकर्ता overscroll करने की कोशिश करता है, तो निम्न लॉगकैट ईवेंट मुद्रित किया जा रहा है :

02-13 16:02:34.230: D/BounceScrollRunnableDefault(15783): run(), TimeFraction=0.5225, mBounceExtent=7.273352 

वहाँ किसी भी तरह से क्या सैमसंग वहाँ किया अनलॉक करने के लिए है? या शायद ओवरस्क्रॉलर बनाने का दूसरा तरीका?

+0

... नीचे दिए गए फिडलर द्वारा विकल्प ... – Houston

उत्तर

3

समस्या हल, मैं अपने ही OverScrollView बनाया है, तो आप इसे उपयोग करने के लिए स्वागत है। https://github.com/EverythingMe/OverScrollView

+0

कोई भी मौका आप इसे सूची दृश्यों के लिए भी काम करने के लिए ठीक कर सकते हैं? – VicVu

+0

ListView एक और जटिल दृश्य है, वही पैच इसके लिए लागू नहीं होगा, हालांकि अगर मेरे पास कोई खबर है तो मैं अपडेट करूंगा। – Rotemmiz

+0

यह बहुत अच्छा होगा, धन्यवाद। – VicVu

3

मैं सिर्फ एक ही समस्या का सामना करना पड़ा और अंत में निम्न कस्टम ओवरस्क्रॉल का पता लगाने के साथ आया था:

listView.setOnTouchListener(new OnTouchListener() { 

     private static final float OVERSCROLL_THRESHOLD_IN_PIXELS = 70; 

     private float downY; 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      int firstVisibleItem = listView.getFirstVisiblePosition(); 
      int totalItemCount = listView.getCount(); 
      int visibleItemCount = listView.getChildCount(); 
      boolean onTop = firstVisibleItem == 0 && listView.getChildAt(0) != null && listView.getChildAt(0).getTop() == 0; 
      boolean onBottom = firstVisibleItem + visibleItemCount == totalItemCount && listView.getChildAt(visibleItemCount-1).getBottom() == listView.getHeight(); 

      if(onTop || onBottom) { 
       switch(event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        downY = event.getY(); 
        break; 
       case MotionEvent.ACTION_MOVE: 
        float deltaY = event.getY() - downY; 
        if(onTop && deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) { 
         // Top overscroll 
        } 
        if(onBottom && -deltaY > OVERSCROLL_THRESHOLD_IN_PIXELS) { 
         // Bottom overscroll 
        } 
        break; 
       } 
      } 

      return false; 
     } 
    }); 
+0

मैं उचित समय में यह कोशिश कर रहा हूं। – VicVu

+0

एक आकर्षण की तरह काम करता है ... बहुत अच्छी तरह से किया। धन्यवाद फिडलर! – Houston

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