2016-07-04 22 views
7

मेरे पास स्क्रॉलव्यू में एक RecyclerView (और कुछ अन्य दृश्य) हैं। वर्तमान में रीसाइक्लिंग व्यू बहुत छोटा है (इसमें 5 में से 2 आइटम दिखाए जाते हैं) और यह स्क्रॉलव्यू से स्वतंत्र रूप से स्क्रॉल करता है, जो स्पष्ट रूप से महान यूएक्स नहीं है। मैं स्क्रॉल करने और विस्तार करने के लिए रीसाइक्लर व्यू प्राप्त करना चाहता हूं ताकि उसके सभी आइटम दिखाई दे सकें।पुनर्चक्रण देखें जो स्क्रॉल नहीं करता है और सभी आइटम दिखाता है

(मुझे पता है कि इस मामले में एक रीसाइक्लिंग व्यू का उपयोग करने के लिए बेवकूफ है। मैं केवल यह कर रहा हूं क्योंकि ऐप में कहीं और मुझे स्क्रॉलिंग आदि के साथ एक सामान्य रीसाइक्लिंग व्यू की आवश्यकता है, लेकिन एक ही तरह की सामग्री है, और मैं नहीं कोड डुप्लिकेट करना चाहते हैं)।

+0

scrollview नेस्टेड पुस्तक से निपटने के लिए का निर्माण नहीं कर रहा है। क्या आपने 'NestedScrollView' – Sharj

+0

चेक किया है क्या आपने "NonScrollRecyclerView" में एक ही समय में सभी आइटम दिखाना प्रबंधित किया था? कुछ कारणों से मेरा रीसाइक्लिंगव्यू 3 से अधिक आइटम –

+0

एक समान समस्या का सामना करने के बाद अपनी ऊंचाई को फिर से समझना प्रतीत नहीं होता है। क्या आपको समाधान मिला? @JeffersonTavares? मैंने wrap_content और नेस्टेड स्क्रॉलिंग अक्षम का उपयोग किया है। –

उत्तर

13

यह बहुत आसान है, बस RecyclerView की ऊंचाई wrap_content पर सेट करें।

तुम भी recycler दृश्य पर नेस्टेड स्क्रॉल अक्षम करने, इसलिए तरह से लाभ हो सकता:

android:overScrollMode 
+0

यह सही है। एक तरफ ध्यान दें, मेरे पास वास्तव में 'recyclerView' की ऊंचाई 'wrap_content' पर सेट की गई थी। जिस मुद्दे का सामना करना पड़ रहा था वह पिकासो की असिंक्रोनिटी और दृश्य क्षेत्र के अंदर/बाहर आने वाले विचारों के साथ एक दृश्य लाने के एक अजीब संयोजन से जुड़ा हुआ था। और यह एक पूरी तरह से अलग q/ए के लिए एक विषय है। – pstobiecki

+4

आप उल्लेख करना भूल गए हैं कि आपको स्क्रॉलव्यू के बजाय NestedScrollView का उपयोग करना होगा। मैंने इसके बारे में नीचे लिखा है। –

+0

इस दृष्टिकोण को करने से आप विचारों को रीसाइक्लिंग में रीसाइक्लिंग व्यू नहीं खो रहे हैं और बड़े स्क्रॉल व्यू में पहले से ही सभी विचारों के साथ एक बड़ी सूची बना रहे हैं? यदि आप उस रीसाइक्लिंग दृश्य में बहुत सी चीजें लोड करने का प्रयास करते हैं तो शायद आपको "लगींग" मिलती है। –

1

इसके अलावा के साथ खेलने की कोशिश जैसा कि इसे पूरा करना चाहिए: आपको NestedScrollView के बच्चे को ScrollViewfocusableInTouchMode = "true" के बजाय NestedScrollView का उपयोग करने की आवश्यकता है।

यदि आप स्क्रॉलव्यू का उपयोग करने पर जोर देते हैं, तो आपको मिनीहेइट को रीसाइक्लिंग व्यू पर भी सेट करना चाहिए, और स्क्रॉलमोड = "कभी नहीं" पर सेट करना चाहिए। इस मामले में, यह अभी भी एक अच्छा समाधान नहीं है क्योंकि minHeight कुछ मामलों

अन्य वैकल्पिक समाधान है कि आप पर विचार करना चाहिए में पर्याप्त नहीं हो सकता है:

  1. एक भी RecyclerView साथ scrollview & RecyclerView बदलें , जिसमें स्क्रॉल व्यू

  2. इसके बजाय ग्रिडलाउट या अन्य लेआउट का उपयोग करने के लिए अतिरिक्त दृश्य प्रकार के साथ विचार हैं।

8

का समाधान setNestedScrollingEnabled (गलत) प्रतिसाद नहीं:

RecyclerView recycler = (RecyclerView) findViewById(R.id.recycler); 
recycler.setNestedScrollingEnabled(false); 
+0

'scrollView' के अंदर' recyclerView' का उपयोग करके प्रदर्शन को प्रभावित करता है? –

+1

यदि आप इसे अच्छी तरह कार्यान्वित करते हैं, तो यह नहीं होना चाहिए। –

0

स्क्रॉलव्यू उपयोग के नीचे स्क्रॉलव्यू उपयोग के लिए अपने लेआउट में सभी आइटम प्रदर्शित करने के लिए उपयोग करें। कुछ इस तरह काम कर सकते हैं: इस तरह की तरह

public class NoScrollRecycler extends RecyclerView { 

    public NoScrollRecycler(Context context){ 
     super(context); 
    } 

    public NoScrollRecycler(Context context, AttributeSet attrs){ 
     super(context, attrs); 
    } 

    public NoScrollRecycler(Context context, AttributeSet attrs, int style){ 
     super(context, attrs, style); 
    } 

    @Override 
    public boolean dispatchTouchEvent(MotionEvent ev){ 

     //Ignore scroll events. 
     if(ev.getAction() == MotionEvent.ACTION_MOVE) 
      return true; 

     //Dispatch event for non-scroll actions, namely clicks! 
     return super.dispatchTouchEvent(ev); 
    } 
} 

उपयोग:

<com.example.custom.NoScrollRecycler 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/color_white"/> 
संबंधित मुद्दे