दिलचस्प पोस्ट
आईफोन ओरिएंटेशन को पोर्ट्रेट से लैंडस्केप तक बदलते समय एचटीएमएल फ़ॉन्ट-आकार बनाए रखें विधि स्थैतिक बनाया जा सकता है, लेकिन क्या यह चाहिए? Django के साथ डाउनलोड करने के लिए फ़ाइल जनरेट कर रहा है बाध्यकारी वसंत mvc आदेश वस्तुओं जब पैरामीटर नाम को अनुकूलित करने के लिए किसी भी क्रम में कई शब्द regex का उपयोग कर बिना एक्स सर्वर के सर्वर पर आर कैसे चलाया जाता है, और टूटा निर्भरता से बचें चयनित रेडियोधन से एंड्रॉइड मिल रहा मूल्य कैसे अक्षम कॉपी, कट, चुनें, सभी का चयन करें UITextView में डाईक्ट्स की सूची में, एक आम डेक फील्ड के न्यूनतम () मान खोजें जांचें कि क्या वर्ष जावा स्क्रिप्ट में वर्ष है कस्टम डायलॉग को एनिमेट करें java: एक निश्चित सेकंड के बाद एक फ़ंक्शन चलाएँ आईओएस: एक HTTP पोस्ट अनुरोध कैसे करना है? DNS होस्टनाम या आईपी पते से मिलान करने के लिए नियमित अभिव्यक्ति? फ़ंक्शन के पास केवल एक एक्जिट पॉइंट क्यों होना चाहिए?

ग्रिडलेआउट (GridView नहीं) सभी बच्चों को समान रूप से कैसे फैलाना

मुझे एक बटन के साथ एक 2×2 ग्रिड होना है। यह केवल आईसीएस है इसलिए मैं दिए गए नए ग्रिड लेआउट का उपयोग करने की कोशिश कर रहा हूं।

यहां मेरे लेआउट का XML है:

<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/favorites_grid" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:rowCount="2" android:columnCount="2"> <Button android:text="Cell 0" android:layout_row="0" android:layout_column="0" android:textSize="14dip" /> <Button android:text="Cell 1" android:layout_row="0" android:layout_column="1" android:textSize="14dip" /> <Button android:text="Cell 2" android:layout_row="1" android:layout_column="0" android:textSize="14dip" /> <Button android:text="Cell 3" android:layout_row="1" android:layout_column="1" android:textSize="14dip" /> </GridLayout> 

समस्या यह है कि मेरे विचार प्रत्येक पंक्ति के लिए समान रूप से नहीं फैलाते हैं इसके कारण मेरे ग्रिड लेआउट के दाईं ओर बहुत अधिक अतिरिक्त जगह होती है I

मैंने layout_gravity="fill_horizontal" सेट करने की कोशिश की लेकिन यह केवल पंक्ति पर अंतिम दृश्य पर लागू होता है इसका मतलब है सेल 1 को सेल 0 के लिए पर्याप्त स्थान देने के लिए सभी तरह से फैला हुआ है।

यह कैसे निपटने के लिए पर विचार?

वेब के समाधान से एकत्रित समाधान "ग्रिडलेआउट (GridView नहीं) सभी बच्चों को समान रूप से कैसे फैलाना"

अद्यतन : वजन 21 एपीआई के रूप में समर्थित हैं। अधिक जानकारी के लिए पॉलट का उत्तर देखें। END अद्यतन GridLayout का उपयोग करते समय सीमाएं हैं, निम्नलिखित उद्धरण दस्तावेज़ से लिया गया है ।

"ग्रिड लेआउट, वजन के सिद्धांत के रूप में भार के सिद्धांत के लिए समर्थन प्रदान नहीं करता है। सामान्य तौर पर, ऐसा संभव नहीं है कि ग्रिडलेआउट को अधिक से अधिक स्थान को एकाधिक पंक्तियों या स्तंभों के बीच गैर-तुच्छ अनुपात में वितरित करना संभव हो। एक पंक्ति या कॉलम में अतिरिक्त स्थान वितरण; एक सेलुलर लेआउट का प्रयोग करें, जो संबंधित सेल समूह में घटकों को पकड़ने के लिए उपयोग करते हैं। "

यहां एक छोटा सा उदाहरण है, जो रैखिक लेआउट उप-दृश्य का उपयोग करता है। (मैं अंतरिक्ष दृश्य इस्तेमाल करता है जो अप्रयुक्त क्षेत्र लेता है और इच्छित स्थिति में बटन को धक्का देता है।)

 <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="1" > <TextView android:text="2x2 button grid" android:textSize="32dip" android:layout_gravity="center_horizontal" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start" android:text="Button 2" /> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3" /> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start" android:text="Button 4" /> <Space android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> </GridLayout> 

एपीआई 21 में शुरू करने से ग्रैडलेआउट में वज़न का अनुमान जोड़ा गया था। पुराने एंड्रॉइड डिवाइसों का समर्थन करने के लिए, आप v7 समर्थन लाइब्रेरी से ग्रिडलेआउट का उपयोग कर सकते हैं।

निम्नलिखित एक्सएमएल एक उदाहरण देता है कि आप स्क्रीन की चौड़ाई को भरने के लिए कैसे वजन का उपयोग कर सकते हैं।

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:grid="http://schemas.android.com/apk/res-auto" android:id="@+id/choice_grid" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:padding="4dp" grid:alignmentMode="alignBounds" grid:columnCount="2" grid:rowOrderPreserved="false" grid:useDefaultMargins="true"> <TextView android:layout_width="0dp" android:layout_height="100dp" grid:layout_columnWeight="1" grid:layout_gravity="fill_horizontal" android:gravity="center" android:background="#FF33B5E5" android:text="Tile1" /> <TextView android:layout_width="0dp" android:layout_height="100dp" grid:layout_columnWeight="1" grid:layout_gravity="fill_horizontal" android:gravity="center" android:background="#FF33B5E5" android:text="Tile2" /> <TextView android:layout_width="0dp" android:layout_height="100dp" grid:layout_columnWeight="1" grid:layout_gravity="fill_horizontal" android:gravity="center" android:background="#FF33B5E5" android:text="Tile3" /> <TextView android:layout_width="0dp" android:layout_height="100dp" grid:layout_columnWeight="1" grid:layout_gravity="fill_horizontal" android:gravity="center" android:background="#FF33B5E5" android:text="Tile4" /> </android.support.v7.widget.GridLayout> 

यहां छवि विवरण दर्ज करें

ऐपकंपुट 21 ग्रिड लेआउट में स्तंभ और पंक्ति वजन हैं, जिनका इस्तेमाल नीचे की तरह छवि के समान ग्रिडलेआउट में प्रत्येक ग्रिड आइटम को समान रूप से बनाने के लिए किया जा सकता है।

 <android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:grid="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" grid:alignmentMode="alignBounds" grid:columnCount="4"> <Button android:layout_width="0dp" style="?buttonStyle" android:layout_height="0dp" android:text="-1" grid:layout_columnWeight="1" grid:layout_rowWeight="1" grid:layout_gravity="fill"/> ... ... ... 

आप गतिशील रूप से प्रत्येक बच्चे की चौड़ाई निर्धारित कर सकते हैं:

 GridLayout.LayoutParams params = (GridLayout.LayoutParams) child.getLayoutParams(); params.width = (parent.getWidth()/parent.getColumnCount()) -params.rightMargin - params.leftMargin; child.setLayoutParams(params); 

ScrollView के साथ v7 समर्थन पुस्तकालय के बिना एपीआई 21 में शुरू करना:

यहां छवि विवरण दर्ज करें

एक्सएमएल:

 <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" > <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="2" > <TextView android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:gravity="center" android:layout_gravity="fill_horizontal" android:background="@color/colorAccent" android:text="Tile1" /> <TextView android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:gravity="center" android:layout_gravity="fill_horizontal" android:background="@color/colorPrimaryDark" android:text="Tile2" /> <TextView android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:gravity="center" android:layout_gravity="fill_horizontal" android:background="@color/colorPrimary" android:text="Tile3" /> <TextView android:layout_width="0dp" android:layout_height="100dp" android:layout_columnWeight="1" android:gravity="center" android:layout_gravity="fill_horizontal" android:background="@color/colorAccent" android:text="Tile4" /> </GridLayout> </ScrollView> 

अपने GridLayout स्पेस में निम्नलिखित को जोड़ने का प्रयास करें यह काम करना चाहिए

 android:useDefaultMargins="true" 

अंत में मुझे समाधान मिला जैसा रोटममीज़ ने कहा, आपको इसे बाद में गतिशील रूप से करना होगा। इस कोड को क्षैतिज दृश्य को भरने के लिए बटनों को फैलाया जाता है, लेकिन यह लंबवत रूप से किया जा सकता है।

 public void fillview(android.support.v7.widget.GridLayout gl) { Button buttontemp; //Stretch buttons int idealChildWidth = (int) ((gl.getWidth()-20*gl.getColumnCount())/gl.getColumnCount()); for( int i=0; i< gl.getChildCount();i++) { buttontemp = (Button) gl.getChildAt(i); buttontemp.setWidth(idealChildWidth); } } 

(20 आंतरिक और बाहरी पैडिंग और मार्जिन के लिए है। यह अधिक सार्वभौमिक किया जा सकता है, लेकिन यह अभी तक क्लीनर है)

तो इसे इस तरह कहा जा सकता है:

  android.support.v7.widget.GridLayout gl = (android.support.v7.widget.GridLayout)findViewById(R.id.buttongrid); ViewTreeObserver vto = gl.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {@Override public void onGlobalLayout() { android.support.v7.widget.GridLayout gl = (android.support.v7.widget.GridLayout) findViewById(R.id.buttongrid); fillview(gl); ViewTreeObserver obs = gl.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); }}); 

यह एक पर्यवेक्षक के साथ किया जाना चाहिए क्योंकि हमें दृश्यों को कॉल करने से पहले दृश्य को देखने के लिए इंतजार करना होगा।

यह सही जवाब है

 <?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/favorites_grid" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:rowCount="2" android:columnCount="2"> <Button android:text="Cell 0" android:layout_row="0" android:layout_column="0" android:layout_columnWeight="1" android:layout_rowWeight="1" android:textSize="14dip" /> <Button android:text="Cell 1" android:layout_row="0" android:layout_column="1" android:textSize="14dip" android:layout_columnWeight="1" android:layout_rowWeight="1"/> <Button android:text="Cell 2" android:layout_row="1" android:layout_column="0" android:textSize="14dip" android:layout_columnWeight="1" android:layout_rowWeight="1"/> <Button android:text="Cell 3" android:layout_row="1" android:layout_column="1" android:textSize="14dip" android:layout_columnWeight="1" android:layout_rowWeight="1"/> </GridLayout> 

मेरे मामले में मैं बटन को गतिशील रूप से जोड़ रहा था इसलिए मेरे समाधान को कुछ एक्सएमएल भाग और कुछ जावा भाग की आवश्यकता होती है। मुझे कुछ अलग-अलग जगहों से समाधान ढूंढना और मिश्रण करना पड़ा और मैंने सोचा कि मैं इसे यहां साझा कर दूंगा और इसी तरह के समाधान की तलाश में किसी और को मददगार मिले।

मेरे लेआउट फ़ाइल का पहला भाग XML …

 <android.support.v7.widget.GridLayout xmlns:grid="http://schemas.android.com/apk/res-auto" android:id="@+id/gl_Options" android:layout_width="match_parent" android:layout_height="wrap_content" grid:useDefaultMargins="true"> </android.support.v7.widget.GridLayout> 

grid:useDefaultMargins="true" आवश्यक नहीं है, लेकिन मैंने कहा क्योंकि यह मेरे लिए बेहतर है, आप अन्य दृश्य प्रभावों को लागू कर सकते हैं (जैसे पैडिंग) जैसा कि कुछ उत्तर में उल्लिखित है अब बटन के लिए मुझे उन्हें गतिशील रूप से जोड़ना होगा ये बटन बनाने के लिए मेरे कोड का जावा हिस्सा है, मैं इस संदर्भ से संबंधित उन पंक्तियों को शामिल कर रहा हूं। मान लें कि मुझे अपने कोड के लिए बहुत से myOptions उपलब्ध हैं और मैं OnClickListener कोड को कॉपी भी नहीं कर रहा हूं।

 import android.support.v7.widget.GridLayout; //Reference to Library public class myFragment extends Fragment{ GridLayout gl_Options; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { gl_AmountOptions = (GridLayout)view.findViewById( R.id.gl_AmountOptions ); ... gl_Options.removeAllViews(); // Remove all existing views gl_AmountOptions.setColumnCount( myOptions.length <= 9 ? 3: 4 ); // Set appropriate number of columns for( String opt : myOptions ) { GridLayout.LayoutParams lParams = new GridLayout.LayoutParams( GridLayout.spec( GridLayout.UNDEFINED, 1f), GridLayout.spec( GridLayout.UNDEFINED, 1f)); // The above defines LayoutParameters as not specified Column and Row with grid:layout_columnWeight="1" and grid:layout_rowWeight="1" lParams.width = 0; // Setting width to "0dp" so weight is applied instead Button b = new Button(this.getContext()); b.setText( opt ); b.setLayoutParams(lParams); b.setOnClickListener( myClickListener ); gl_Options.addView( b ); } } } 

जैसा कि हम समर्थन पुस्तकालय से GridLayout का उपयोग कर रहे हैं और न कि मानक ग्रिड लेआउट, हमें इसके बारे में ग्रेड को अपनी YourProject.grade

 dependencies { compile 'com.android.support:appcompat-v7:23.4.0' ... compile 'com.android.support:gridlayout-v7:23.4.0' } 

आप ViewGroup onLayout विधि ओवरराइड करके यह बहुत तेज़ बना सकते हैं। यह मेरा सार्वभौमिक समाधान है:

 package your.app.package; import android.content.Context; import android.view.ViewGroup; public class GridLayout extends ViewGroup { public GridLayout(Context context) { super(context); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int columns = 2;//edit this if you need different grid final int rows = 2; int children = getChildCount(); if (children != columns * rows) throw new IllegalStateException("GridLayout must have " + columns * rows + " children"); int width = getWidth(); int height = getHeight(); int viewWidth = width / columns; int viewHeight = height / rows; int rowIndex = 0; int columnIndex = 0; for (int i = 0; i < children; i++) { getChildAt(i).layout(viewWidth * columnIndex, viewHeight * rowIndex, viewWidth * columnIndex + viewWidth, viewHeight * rowIndex + viewHeight); columnIndex++; if (columnIndex == columns) { columnIndex = 0; rowIndex++; } } } } 

संपादित करें: बच्चों के लिए मैच_पैंट को मत भूलें!

 android:layout_width="match_parent" android:layout_height="match_parent" 

मुझे मिल सकता है सबसे अच्छा उपाय, आप चाहते हैं कि प्रत्येक पंक्ति के लिए एक रैखिक लेआउट (क्षैतिज) का उपयोग करना है और इसके भीतर बटन (सेल) की चौड़ाई 0dp और वजन 1 को आवंटित करें। प्रत्येक रैखिक लेआउट (पंक्तियों) के लिए ऊंचाई निर्दिष्ट करें 0 डीपी और वजन 1 के लिए। नीचे दिए गए कोड को ढूंढें- एंड्रॉइड भी: लेआउट_ग्राविटी = "सेंटर_वेटिकल" का उपयोग पंक्ति में बटन को संरेखित करने के लिए किया जाता है, यदि वे चर लंबाई पाठ रखते हैं 0 डीपी और वजन का उपयोग यह एक बहुत साफ लेकिन अभी तक बहुत अच्छी तरह से ज्ञात चाल नहीं है।

 <LinearLayout android:id="@+id/parent_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/button_bue_3d" android:orientation="vertical" > <LinearLayout android:id="@+id/layout_row1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/button1" style="?android:attr/buttonStyleSmall" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:clickable="false" android:layout_gravity="center_vertical" android:text="ssssssssssssssssssssssssss" /> <Button android:id="@+id/button2" style="?android:attr/buttonStyleSmall" android:clickable="false" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:layout_gravity="center_vertical" android:text="sggggggg" /> </LinearLayout> <LinearLayout android:id="@+id/layout_row2" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal" > <Button android:id="@+id/button3" style="?android:attr/buttonStyleSmall" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:layout_gravity="center_vertical" android:text="s" /> <Button android:id="@+id/button4" style="?android:attr/buttonStyleSmall" android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" android:clickable="false" android:layout_gravity="center_vertical" android:text="s" /> </LinearLayout> </LinearLayout> 

मैं एक केन्द्रित तालिका लेनी चाहूंगी जो लेबल सही दायरे से है और मानों को गठबंधन छोड़ दिया गया है। अतिरिक्त स्थान तालिका के आसपास होना चाहिए। बहुत कुछ प्रयोग करने और दस्तावेजों के अनुसार मुझे क्या करना चाहिए का पालन नहीं करने के बाद, मैं काम करता है, जो कुछ के साथ आया था यहां मैंने जो किया है:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="vertical" > <GridLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:columnCount="2" android:orientation="horizontal" android:useDefaultMargins="true" > <TextView android:layout_gravity="right" android:text="Short label:" /> <TextView android:id="@+id/start_time" android:layout_gravity="left" android:text="Long extended value" /> <TextView android:layout_gravity="right" android:text="A very long extended label:" /> <TextView android:id="@+id/elapsed_time" android:layout_gravity="left" android:text="Short value" /> </GridLayout> 

यह काम करने लगता है लेकिन ग्रिड लेआउट संदेश दिखाता है:

"यह ग्रिड लेआउट लेआउट या इसके रेखीय लयआउट मातृत्व बेकार है"

यह निश्चित नहीं है कि क्यों यह "बेकार" है जब यह मेरे लिए काम करता है

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

धन्यवाद।

यह काफी पुराना सवाल है, लेकिन स्पष्ट रूप से बहुत से लोगों के लिए ब्याज की इस तरह से 4 बटनों की एक सरल लेआउट के लिए, ऐसा लगता है कि एक TableLayout वांछित परिणाम पूरा करने का सबसे आसान तरीका है।

यहां कुछ उदाहरण कोड दिया गया है जिसमें तालिका के पहले 2 पंक्तियों को दिखाया गया है जिसमें 6 कॉलम हैं जो कि उसके माता-पिता की चौड़ाई फैले हैं। प्रत्येक सेल में रैखिक लयआउट और छवि दृश्य का उपयोग सेल के रंग के होने के दौरान एक छवि के "चालू और बंद" के लिए अनुमति के लिए किया जाता है।

 <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1,2,3,4,5,6" android:background="@drawable/vertical_radio_button_background" android:padding="2dp"> <TableRow android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/brown" android:tag="13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="1" android:background="@color/brown"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/maraschino" android:tag="9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="2" android:background="@color/maraschino"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/cayenne" android:tag="22" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="3" android:background="@color/cayenne"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/maroon" android:tag="18" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="4" android:background="@color/maroon"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/plum" android:tag="3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="5" android:background="@color/plum"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/eggplant" android:tag="15" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="6" android:background="@color/eggplant"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> </TableRow> <TableRow android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/plum2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="1" android:background="@color/plum"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/lavender" android:tag="14" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="2" android:background="@color/lavender"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/carnation" android:tag="16" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="3" android:background="@color/carnation"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/light_pink" android:tag="23" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="4" android:background="@color/light_pink"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/strawberry" android:tag="10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="5" android:background="@color/strawberry"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> <LinearLayout android:id="@+id/magenta" android:tag="20" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:layout_margin="1dp" android:layout_column="6" android:background="@color/magenta"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5dp" android:src="@drawable/selected_check" android:visibility="invisible"/> </LinearLayout> </TableRow> </TableLayout> 

पुराने प्रश्न, लेकिन मेरा समाधान जोड़ना चाहता था मैंने एक "रेखीय ग्रिड लेआउट" बनाया जो कि एक ग्रिड का अनुकरण करता है लेकिन नेस्टेड रैखिक लेआउट का उपयोग कर रहा है। यह अंतरिक्ष को भरने के लिए खिंचाव की अनुमति देता है।

http://zerocredibility.wordpress.com/2014/12/18/linear-grid-layout/

यहां मैंने जो किया है और मुझे यह कहते हुए खुशी है कि यह मेरे लिए काम करती है मैं भी पूरे स्क्रीन को कवर करने के लिए वस्तुओं की एक 2×2, 3×3 आदि ग्रिड चाहता था। ग्रिडलेआउट स्क्रीन की चौड़ाई का पालन नहीं करते हैं। रैखिक लेआउट का काम है लेकिन आप नेस्टेड वजन का उपयोग नहीं कर सकते।

मेरे लिए सबसे अच्छा विकल्प फ्रैगमेंट्स का उपयोग करना था, मैंने इस ट्यूटोरियल का उपयोग मुझे जो करना चाहते थे, शुरू करने के लिए किया था।

यहां कुछ कोड है:

मुख्य गतिविधि:

 public class GridHolderActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_6); } } 

activity_main_6 एक्सएमएल (3 टुकड़े फुलाते हैं)

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <fragment android:id="@+id/frag1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:name=".TwoHorizontalGridFragment" tools:layout="@layout/two_horiz" /> <fragment android:id="@+id/frag2" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:name=".TwoHorizontalGridFragment" tools:layout="@layout/two_horiz" /> <fragment android:id="@+id/frag3" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:name=".Grid.TwoHorizontalGridFragment" tools:layout="@layout/two_horiz" /> 

बेस खंड लेआउट

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_gravity="center" android:layout_height="match_parent"> <ImageQueue android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/img1" android:layout_weight="1"/> <ImageQueue android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/img2" android:layout_weight="1"/> </LinearLayout> 

टुकड़ा वर्ग (केवल कस्टम व्यू के आरंभीकरण को संभालता है) प्रति टुकड़ा 2 टाइल फ्लाई करता है

 public class TwoHorizontalGridFragment extends Fragment { private View rootView; private ImageQueue imageQueue1; private ImageQueue imageQueue2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * Inflate the layout for this fragment */ rootView = inflater.inflate( R.layout.two_horiz, container, false); return rootView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); imageQueue1 = (ImageQueue)rootView.findViewById(R.id.img1); imageQueue2 = (ImageQueue)rootView.findViewById(R.id.img2); imageQueue1.updateFiles(); imageQueue2.updateFiles(); } 

}

बस!

यह नेस्टेड वेट का उपयोग करने के लिए लगभग अजीब काम है, अनिवार्य रूप से यह मुझे एक परिपूर्ण 2×3 ग्रिड देता है जो मेरे 10 इंच के टैबलेट और मेरे एचटीसी डॉट डीएनए दोनों की पूरी स्क्रीन को भरता है। मुझे समझने दीजिए यह आपके लिए कैसा रहेगा!