2015-05-20 12 views
6

मैं एक RecyclerView और संबंधित LinearLayoutManager के साथ काम कर रहा हूं। मैं अपने ऐप के हिस्से में कुछ कस्टम स्क्रॉलिंग फीचर्स जोड़ रहा था, जहां मैं इस प्रोजेक्ट के बाद मॉडलिंग किए गए रीसाइक्लिंग व्यू के स्क्रॉल के साथ कस्टम हेडर ऑब्जेक्ट का अनुवाद करूंगा: https://github.com/boxme/ParallaxHeaderViewPager (जो रीसाइक्लिंग व्यू के बजाय ListView का उपयोग करता है)।पुनर्चक्रण देखें LinearLayoutManager computeVerticalScrollOffset() सही मान वापस नहीं कर रहा है

हालांकि मैं एक अजीब मुद्दे में भाग गया। यह थोड़ी देर के लिए बस ठीक होगा लेकिन फिर यह कुछ सौ पिक्सेल कूद जाएगा। मैंने LinearLayoutManager.computeVerticalScrollOffset() द्वारा गणना किए गए ऑफसेट को देखने के लिए लॉग स्टेटमेंट जोड़े, जैसा कि मैंने पर्याप्त रूप से स्क्रॉल किया था, ऑफ़सेट यादृच्छिक रूप से 320 से 1200 तक कूद रहा था, फिर यह उस बिंदु से ऑफसेट को उचित रूप से कंप्यूटिंग जारी रखेगा।

नीचे दिए गए मेरे जवाब को मैंने कैसे हल किया है!

उत्तर

5

यह मुद्दा इस तथ्य के रूप में समाप्त हुआ कि मेरी सूची में मेरे पास बहुत बड़ी अदृश्य वस्तु थी जिसके बाद छोटी वस्तुओं का समूह था। यह पता चला है कि LinearLayoutManager.computeVerticalScrollOffset() औसत पंक्ति ऊंचाई गणना करते समय खाते में लेता है। इससे मेरे लिए कोई समस्या आई क्योंकि चूंकि शीर्ष पर बड़ी वस्तु पंक्तियों की औसत ऊंचाई को फेंक रही थी। औसत पंक्ति ऊंचाई सटीक रखने के लिए मैंने एक बड़े व्यक्ति के बजाय शीर्ष पर कुछ छोटी अदृश्य वस्तुओं को जोड़कर इसे हल किया।

मुझे उम्मीद है कि यह किसी भी समस्या का सामना करने वाले किसी भी व्यक्ति की मदद करेगा!

+1

ऐसा करने के बजाय, आप एक सस्ता और अधिक उचित समाधान के लिए 'computeVerticalScrollOffset', 'सीमा' और' श्रेणी' को ओवरराइड कर सकते हैं। – yigit

+0

यह एक अच्छा विचार है! मैं रीसाइक्लर व्यू और लेआउट मैनेजर विधियों को ओवरराइड करने से थोड़ा सावधान था क्योंकि कक्षाएं अभी भी अपेक्षाकृत नई हैं और भविष्य में महत्वपूर्ण रूप से बदल सकती हैं। मैं मानता हूं कि मेरा समाधान हैकर पक्ष पर था, लेकिन कम से कम इसे अभी भी काम करना चाहिए यदि कक्षा भविष्य में बदलती है :) – rakoonise

+0

वे विधियां देखने से दर्पण हैं ताकि परिवर्तन को बदलने की संभावना बहुत कम हो। साथ ही, जब हम एक सार्वजनिक विधि बदलते हैं, तो हम इसे संभवतः पिछड़ा संगत बनाने की कोशिश करते हैं यदि संभव हो तो – yigit

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