2012-12-20 16 views
13

की ऊंचाई कैसे सेट करें, मैं अपने ग्रिडव्यू की प्रोग्राम को अपने आवेदन में प्रोग्रामेटिक रूप से सेट करना चाहता हूं।ग्रिडव्यू प्रोग्रामेटिक एंड्रॉइड

क्या इसे लागू करने का कोई तरीका है?

मैं कोड से दो विशेष मामलों में ग्रिडव्यू ऊंचाई को बदलना चाहता हूं।

संपादित करें:

<fragment 
    android:id="@+id/mygridview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dip" 
    class="com.myapp.android.MyGridViewClass" /> 

MyGridViewClass फैली टुकड़ा जहां GridView भर जाता है।

<GridView 
    android:id="@+id/mygridview_container" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="5dip" 
    android:columnWidth="90dp" 
    android:gravity="center_vertical|center_horizontal" 
    android:horizontalSpacing="1dp" 
    android:numColumns="3" 
    android:scrollbars="vertical" 
    android:stretchMode="spacingWidthUniform" 
    android:verticalSpacing="5dp" /> 

myGridViewClass onViewCreated में, मैं gridview कोड का उपयोग कर,

gridView = (GridView)getView().findViewById(R.id.mygridview_container); 
gridAdapter = new MyCustomAdapter(context, list); 
gridView.setAdapter(gridAdapter); 

जब भी दृश्य मैं gridview में आइटम्स की संख्या की जाँच करें और ऊंचाई के हिसाब से सेट करने के लिए बनाई गई है बढ़ा-चढ़ाकर कर रहा हूँ।

जब मैंने ग्रिडव्यू के लिए लेआउट पैराम्स() सेट करने का प्रयास किया, तो मुझे यह अपवाद मिला।

android.view.InflateException: Binary XML file line #89: Error inflating class fragment 

कहाँ लाइन 89 टुकड़ा में इस लाइन से मेल खाती है वर्ग = "com.myapp.android.MyGridViewClass"

+0

InflateException आम तौर पर एक मूल कारण है। कृपया पूर्ण stacktrace – ben75

+0

सही ढंग से इस संदर्भ लिंक का काम किया [ग्रिडव्यू ऊंचाई कट हो जाती है] (http://stackoverflow.com/questions/8481844/gridview-height-gets-cut) –

उत्तर

26

उपयोग इस, के रूप में

ViewGroup.LayoutParams layoutParams = yourGridview.getLayoutParams(); 
layoutParams.height = 50; //this is in pixels 
yourGridview.setLayoutParams(layoutParams); 

संपादित करें:: यदि आप वर्तमान layoutParams बनाए रखना चाहते यदि आप चाहते हैं इनपुट करने के लिए ऊंचाई पिक्सल के बजाय dp के रूप में, पिक्सल dp राशि का अनुवाद:

public static int convertDpToPixels(float dp, Context context){ 
    Resources resources = context.getResources(); 
    return (int) TypedValue.applyDimension(
      TypedValue.COMPLEX_UNIT_DIP, 
      dp, 
      resources.getDisplayMetrics() 
    ); 
} 
+0

धन्यवाद मित्र, मैंने इस विधि को भी आजमाया काम नहीं कर रहा हूं। मैं एक टुकड़ा का उपयोग कर रहा हूं जिसमें मैं इस ग्रिडव्यू को फुला रहा हूं। शायद यह कोड अवरुद्ध कर रहा है। मुझे निर्दिष्ट वर्ग के लिए 'इन्फ्लेट एक्सेप्शन' मिल रहा है जो 'class = "com.myapp.android.MyGridViewClass" ' – DroidBee

+0

मुझे आश्चर्य है कि यहां 'lp' क्या है। –

+0

@twntee संपादित देखें। Lp = layoutParams – stealthjong

3

मुझे लगता है कि यह काम करना चाहिए:

GridView gridView = (GridView)findViewById(...); 
ViewGroup.LayoutParams lp=new ViewGroup.LayoutParams(width,height); 
gridView.setLayoutParams(lp); 
+0

मैंने इस विधि को आजमाया लेकिन मुझे क्लासकास्टएक्सप्शन मिल रहा है .. ! – DroidBee

+0

खोजने के लिए आईडी को दो बार जांचें ViewById – ben75

+0

हां, मैंने चेक किया। यह सही है। – DroidBee

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