18

में एकल पंक्ति का अवधि आकार सेट करना मेरे पास एक चौंका देने वाला ग्रिड है जिसमें 2 कॉलम हैं। यह काम कर रहा है जो मैं चाहता हूं वह पंक्ति के लिए 2 कॉलम पर फैलाने के लिए स्थिति 0 पर है। मैं काफी आसानी से के रूप में तो GridLayoutManger उपयोग करने से पहले यह किया है:StaggeredGridLayoutManager

   mGridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
        @Override 
        public int getSpanSize(int position) { 
         return position == 0 ? 2 : 1; 
        } 
       }); 

StaggeredGridLayoutManager मेरे जैसे GridLayoutManager करता है इस कार्यक्षमता के साथ प्रदान नहीं करता है।

क्या ऐसा करने का कोई अलग तरीका है? मैंने खोज की है लेकिन किसी भी समस्या के साथ किसी को भी नहीं मिला है, जो आश्चर्यजनक है क्योंकि मुझे लगता है कि यह कार्यक्षमता मेरे परिदृश्य और अनंत स्क्रॉलिंग के लिए काफी उपयोगी होगी, जब ReogresserView की अंतिम पंक्ति में प्रोग्रेसबार दिखाया जाता है।

उत्तर

49

आप setFullSpan विधि का उपयोग कर सकते हैं।
इस तरह आइटम सभी अवधि क्षेत्र का उपयोग कर लेआउट ले जाएगा।

इसका मतलब है, अगर अभिविन्यास लंबवत है, तो दृश्य की पूरी चौड़ाई होगी; यदि अभिविन्यास क्षैतिज है, तो दृश्य में पूर्ण ऊंचाई होगी।

कुछ इस तरह:

public final void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { 

    StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) viewHolder.itemView.getLayoutParams(); 
    layoutParams.setFullSpan(true); 
} 

वेतन ध्यान।
यह उन सभी दृश्यों का समर्थन करता है जो सभी कॉलमों का विस्तार करते हैं, लेकिन यह आपके मामले के लिए पर्याप्त होना चाहिए।

+2

बिल्कुल वही जो मैं खोज रहा था। बहुत बहुत धन्यवाद गेब्रियल! –

+6

क्या होगा यदि आप चाहते हैं कि विशिष्ट आइटम वास्तव में 2 (3 में से 3) कॉलम तक फैलाए? सभी कॉलम फैलाने के बजाय। –

+0

@AdamJohns आप इसे इस लेआउटमैनेजर के साथ नहीं कर सकते हैं। –

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