2015-01-22 9 views
10

वर्तमान परिदृश्य detachesRecyclerView दृश्य अभी भी दिखाई दे

मैं एक RecyclerView पर एक लंबन प्रभाव को प्राप्त करने के लिए इस पुस्तकालय https://github.com/kanytu/android-parallax-recyclerview उपयोग कर रहा हूँ। अब तक सब ठीक है. हालांकि मैं Google न्यूजस्टैंड जैसे प्रभाव प्राप्त करना चाहता हूं जहां हेडर अभी भी कार्ड को बोल्ड कर रहा है।

enter image description here

के रूप में:

समस्या

समस्या यह है कि RecyclerView (या LinerLayoutManager) शीर्षक पल सूची के पहले तत्व छू लेती है माता पिता दृश्य के शीर्ष देखने detaches है आप पल देख सकते हैं कि पहला कार्डव्यू शीर्ष पर छूता है पल रीसाइक्लर व्यू हेडर को अलग करता है।

मुझे यकीन है कि तर्क पर कोई समस्या नहीं है, जब कार्ड शीर्ष पर पहुंचता है तो मुझे RecyclerView.findViewHolderForPosition(0) == null मिलता है। यह प्रदान करना कि हेडर रीसाइक्लिंग किया गया है। इस पद्धति का उपयोग धारक सेट करने के लिए recycler नहीं कोई असर नहीं करता है के लिए

ViewHolder.setIsRecyclable:

की कोशिश की समाधान

मैं की तरह बहुत सी बातें की कोशिश की।

LayoutManager.ignoreView मैंने स्कैपिंग और रीसाइक्लिंग से अनदेखा करने के लिए दृश्य को चिह्नित करने का प्रयास किया। परिणाम एक अपवाद कह रहा था: Trying to recycle an ignored view holder. You should first call stopIgnoringView(view) before calling recycle.

setItemViewCacheSize कुछ भी नहीं करता है। setItemViewCacheSize(50) पर कॉल करने का प्रयास किया और यह हेडर को कुछ भी नहीं करता है।

setMaxRecycledViews रीडसाइक्ड दृश्यों के अधिकतम दृश्य को टाइपटाइप = हेडर से 0 पर सेट करने का प्रयास किया और यह अभी भी इसे पुन: उपयोग करता है।

निष्कर्ष

तो मैं सवाल अगर वहाँ वैसे भी है के लिए अलग हो रही है नहीं आइटम चिह्नित करने के लिए जब तक मैं इतना आदेश (जाँच की तरह अगर यह अभी भी दिखाई दे रहा है और फिर इसे अलग)।

वहाँ भी इसके बारे में GitHub पर एक मुद्दा है: https://github.com/kanytu/android-parallax-recyclerview/issues/7

+0

करता है 'यह प्रभावित setItemViewCacheSize'? https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html#setItemViewCacheSize(int) – darnmason

+0

@ डर्नमसन संख्या। इसका कोई प्रभाव नहीं प्रतीत होता है। न तो 'getRecycledViewPool() है। SetMaxRecycledViews() ' –

+0

मुझे लगता है कि यह लेआउटमैनेजर का काम है, न कि रीसाइक्लर व्यू, शायद आपको एक कस्टम की आवश्यकता होगी जो पहले आइटम को कभी भी अलग न करे। – darnmason

उत्तर

1

आप अपने recyclerview साथ नए डिजाइन समर्थन लाइब्रेरी की CoordinatorLayout का उपयोग करें और इस तरह कोई मुद्दों के साथ ही प्रभाव बना सकते हैं।

जांच के लिए इस लिंक: http://android-developers.blogspot.com/2015/05/android-design-support-library.html

+0

में मदद की है, जिसमें पूरे पुस्तकालय को हटाने और एक नया शुरू करने सहित कई बदलावों की आवश्यकता होगी, जो अनावश्यक होगा क्योंकि समर्थन पुस्तकालय पहली जगह में है, यह नहीं है इसका इरादा क्या है LinearLayoutManager को बदलकर एक बेहतर फिक्स संग्रहीत किया जा सकता है –

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