उम्मीद है कि यह आप के लिए एक सख्त आवश्यकता नहीं है कि आप GridView
उपयोग करते हैं, के रूप में यहाँ मेरी XML कोड है मेरा मानना है कि आप जो खोज रहे हैं वह अनिवार्य रूप से असंभव है। हालांकि, अगर आप इसके बजाय RecyclerView
का उपयोग करने के इच्छुक हैं, तो मेरे पास आपके लिए समाधान है। https://github.com/google/flexbox-layout
मेरे समाधान के लिए पूर्ण कोड यहाँ दिख रहा है: https://gist.github.com/zizibaloob/0c44bfe59b371b5ae0bd2edcb4a7e592
मैं महत्वपूर्ण बिट्स यहाँ कवर करेंगे
यह समाधान FlexboxLayoutManager
के उपयोग, गूगल की FlexboxLayout परियोजना का एक हिस्सा कर देगा। सबसे पहले, MainActivity.onCreate()
में FlexboxLayoutManager
की स्थापना:
FlexboxLayoutManager manager = new FlexboxLayoutManager(this, FlexDirection.ROW);
manager.setJustifyContent(JustifyContent.CENTER);
RecyclerView recycler = (RecyclerView) findViewById(R.id.recycler);
recycler.setLayoutManager(manager);
जब हम लेआउट प्रबंधक बनाते हैं तो हम FlexDirection.ROW
पारित यह बताने के लिए हम यह हमारे आइटम बिछाने के लिए बाहर क्षैतिज रूप से (चाहते हैं यानी एक पंक्ति को भरने और फिर अगले करने के लिए प्रवाह एक कॉलम भरने और फिर अगले कॉलम में बहने के बजाए पंक्ति)।
हमको JustifyContent.CENTER
का उपयोग करके प्रबंधक को यह बताने के लिए कहते हैं कि हम आंशिक रूप से भरी पंक्तियों को केंद्रित करना चाहते हैं।
दूसरी महत्वपूर्ण बात यह है कि हम GridView
के व्यवहार की नकल करते हैं और इसकी एक निश्चित संख्या कॉलम रखने की क्षमता है। इस कोड को MyAdapter.onCreateViewHolder()
में है:
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) itemView.getLayoutParams();
layoutParams.width = (parent.getWidth()/4) - layoutParams.leftMargin - layoutParams.rightMargin;
itemView.setLayoutParams(layoutParams);
कुंजी यहाँ (parent.getWidth()/4)
है, जो प्रत्येक आइटम दृश्य उपलब्ध चौड़ाई का एक चौथाई देता है। आप स्तंभों की एक अलग संख्या चाहते हैं, बस, एक 8
को 4
बदलने आदि
हम भी leftMargin
और rightMargin
घटाना चौड़ाई से क्योंकि हमारे आइटम विचारों मार्जिन है, और हम उनके लिए स्थान छोड़ना की जरूरत है। यदि आपके विचारों में मार्जिन नहीं होंगे, तो आप इसे छोड़ सकते हैं।
यह सब एक साथ रखो और आप एक ऐप्लिकेशन है जो इस तरह दिखता है:
क्या आपको समाधान पता है? – FiXiT
मुझे अभी भी पता नहीं है :( –
इस के लिए एक जवाब देखना अच्छा लगेगा। एक ही समस्या का सामना करना। – lostintranslation