2012-09-08 9 views
6

मैं एंड्रॉइड में एक विषम ग्रिड विजेट बनाना चाहता हूं जैसे टैबलेट या Pinterest के लिए Google+ जैसे ऐप्स में उपयोग किया जाता है। मुझे कोई ट्यूटोरियल नहीं मिल रहा है और यह विशेष रूप से मुश्किल लगता है।टैबलेट ट्यूटोरियल के लिए Google+ एंड्रॉइड ग्रिड विजेट

enter image description here

दुर्भाग्य GridView एक ही आकार के केवल कोशिकाओं, जबकि मैं विभिन्न आकारों कोशिकाओं हासिल करना चाहते हो सकता है। क्या आप मुझे किसी भी अच्छे ट्यूटोरियल पर इंगित कर सकते हैं? मुझे केवल इतना पता है कि मुझे AbsListView का विस्तार करना है।

उत्तर

0

कैसे चर आइटम 'ऊंचाइयों हैं के आधार पर आप कुछ ही विकल्प हैं:

  1. आप आप के साथ चारों ओर खेलना चाहिए ऊंचाइयों (जैसे Pinterest) के कई रूपों के साथ एक GridView करने के लिए देख रहे हैं StaggeredGridView - जहां तक ​​मैं कह सकता हूं, यह अभी वहां का सबसे अच्छा ओपन सोर्स समाधान है। इस को हल करने के एक से थोड़ा आसान समस्या है, और एक नियमित रूप से ol 'ListView और BaseAdapter का एक उपवर्ग का उपयोग करके मजाक उड़ाया जा सकता है -

  2. छवि आप पोस्ट में, यह के रूप में अगर वहाँ चर ऊंचाई बच्चों के साथ माता-पिता पंक्तियों हैं लग रहा है। इसके लिए कोड लिखना एसओ उत्तर के लिए भी शामिल है, लेकिन मैं आपको इस बारे में एक सिंहावलोकन दूंगा कि मैं इस प्रभाव को कैसे प्राप्त कर सकता हूं।

    • BaseAdapter समय ऐसी है कि वह सूचीदृश्य यह कितने पंक्तियों की आवश्यकता होगी करने के लिए रिपोर्ट कर सकते हैं के आगे प्रत्येक पंक्ति के किसी न किसी लेआउट का निर्धारण करना चाहिए - आप getCount() ओवरराइड करने के लिए की आवश्यकता होगी।
    • अपने एडाप्टर के getView() में, आप बढ़ जाएगा एक भी LinearLayout (, अधिक LinearLayouts फिर से) (या शायद convertView का उपयोग करता है, तो यह पुनर्नवीनीकरण किया गया है) और के रूप में कई बच्चों को जोड़ने के रूप में आप डिवाइस की चौड़ाई के लिए की आवश्यकता होगी (आप लगाना चाहिए यह रनटाइम पर बाहर है, जब तक कि आप केवल एक फोन और टैबलेट संस्करण बनाना चाहते हैं)।
    • प्रत्येक बच्चे LinearLayout पंक्ति में जोड़ा गया वजन = 1 पर सेट किया जाना चाहिए ताकि वे मूल पंक्ति की पूरी चौड़ाई तक फैल जाएं। आपके द्वारा पोस्ट किए गए स्क्रीनशॉट में, 3 कॉलम हैं (तीसरी आईडी काट दिया गया है)।
    • प्रत्येक बच्चे LinearLayout आपने अभी पंक्ति में जोड़ा है एक कॉलम का प्रतिनिधित्व करता है। आपको अपनी ओरिएंटेशन को ऊर्ध्वाधर पर सेट करना चाहिए, क्योंकि वे कॉलम हैं!
    • प्रत्येक कॉलम के भीतर, यदि आप एक बच्चे को जोड़ना चाहते हैं, तो आपके पास ग्रिडव्यू होगा।
    • यदि आप उपरोक्त प्रभाव प्राप्त करना चाहते हैं, तो आप प्रत्येक कॉलम में और आइटम जोड़ सकते हैं।
    • उदाहरण के लिए, पंक्ति 1, कॉलम 1 में एक बड़ा बच्चा है। पंक्ति 1 में कॉलम 2 और 3 दोनों में 2 आधा ऊंचाई वाले बच्चे हैं।
+0

मैं एक संशोधित StaggeredGridView का उपयोग कर रहा है और यह काम करता है। – Matroska

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