2011-08-15 8 views
17

मेरे पास सरल ग्रिड व्यू (एक कॉलम और छः पंक्तियों के साथ) है, जो सेल में टेक्स्ट व्यू के साथ ImageView प्रदर्शित करता है (मैं एडाप्टर बनाता हूं)। पूरी स्क्रीन ऊंचाई भरने के लिए पंक्तियों को कैसे फैलाएं ?? अब मैं कोशिकाओं नीचे कुछ जगह ...एंड्रॉइड स्क्रीन भरने के लिए ग्रिडव्यू में पंक्तियों को कैसे फैलाएं?

main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal"> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="150dp" 
    android:orientation="vertical" 
    android:id="@+id/left"> 
    <include layout="@layout/menu_grid"></include> 
</LinearLayout> 
<LinearLayout android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    android:id="@+id/right"> 
    <ImageView android:src="@drawable/image" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/imageMain" 
     android:layout_gravity="center"> 
    </ImageView> 
</LinearLayout> 

menu_grid.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent"> 
<GridView android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:id="@+id/gridView" 
    android:padding="10dp" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:numColumns="1" 
    android:columnWidth="100dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center"></GridView> 

item.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:orientation="vertical" android:gravity="fill_horizontal"> 
<ImageView android:src="@drawable/icon" 
    android:layout_height="70dp" android:id="@+id/imageIcon" 
    android:layout_width="70dp" android:layout_gravity="center_horizontal"></ImageView> 
<TextView android:id="@+id/textIcon" android:text="TextView" 
    android:layout_gravity="center" android:layout_height="wrap_content" 
    android:layout_width="wrap_content"></TextView> 
है

ImageAdapter.java

public class ImageAdapter extends BaseAdapter { 
//....some code 
//.... 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view; 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater)_context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.item, null); 

     TextView text = (TextView) view.findViewById(R.id.textIcon); 
     text.setText(labels[position]); 

     ImageView image = (ImageView) view.findViewById(R.id.imageIcon); 
     image.setImageResource(icons[position]);   

    } else { 
     view = convertView; 
    } 

    return view; 
} 

}

+0

अपना लेआउट और/या कोड पोस्ट करें। – Brian

उत्तर

-1

मुझे आशा है कि मैं तुम्हें सही ढंग से समझ रहा हूँ, यदि ऐसा है तो यह wrap_content की fill_parent instead करने के लिए अपने GridView बदलते रूप में के रूप में आसान है।

बदलें

<GridView android:layout_height="wrap_content" 

<GridView android:layout_height="fill_parent" 

अगर ऐसा नहीं है तो यह शायद item.xml कि आप बदलना चाहते हैं की LinearLayout पर लेआउट ऊंचाई है।

+1

धन्यवाद, लेकिन यह काम नहीं करता है :(मैं सिर्फ स्क्रीन भरने के लिए लाइनों (खिंचाव पंक्तियों, कॉलम नहीं) के बीच की जगह को बढ़ाना चाहता हूं .. मैं लेआउट ऊंचाई के साथ कोशिश करूंगा :) – snil

27

मुझे जो समझा गया, वैसे ही सवाल यह है कि- यदि मेरे पास ग्रिड व्यू में डेटा की 6 पंक्तियां भरी जाएंगी, तो मैं 6 पंक्तियों और कुछ रिक्त स्थान दिखाने के बजाय, इन 6 पंक्तियों को पूरी स्क्रीन कैसे भर सकता हूं आखिरी पंक्ति

इसे प्राप्त करने के लिए आपको ग्रिड व्यू आइटम लेआउट (अपने मामले में इसकी item.xml) की न्यूनतम ऊंचाई (स्क्रीन की ऊंचाई)/6 पर सेट करना होगा, जहां 6 है (कोई भी पंक्ति जो आपको भरनी है) । यह न्यूनतम ऊंचाई आपके द्वारा उपयोग किए जा रहे एडाप्टर में सेट की जा सकती है।

डिवाइस की स्क्रीन की ऊंचाई ढूंढने के लिए:

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 

int width = metrics.widthPixels; 
int height = metrics.heightPixels; 

गतिविधि में इन मूल्यों को खोजने और उन्हें जनता स्थिर बनाने के लिए और उन्हें अनुकूलक में उपयोग करते हैं, मैं में इन मूल्यों को खोजने में एक समस्या थी एडाप्टर वर्ग

तो न्यूनतम ऊंचाई सेट करने के लिए:

view = inflater.inflate(R.layout.item, null); 
view.setMinimumHeight(GridViewActivity.height/6); 

मैं पोस्ट को देखने के बाद यह करने की कोशिश की है, और यह पूरी तरह से काम किया।

+4

एक आकर्षण की तरह काम करता है ...! – dd619

+0

ग्रेट !! इसने काम कर दिया। धन्यवाद दोस्त! – Bhupinder

+0

पूरी तरह से काम करता है .... – bynu022

3

यदि आप लाइनों के बीच की जगह को बढ़ाना चाहते हैं तो आप पैडिंग का उपयोग कर सकते हैं, इसे काम करना चाहिए। आप अपनी आवश्यकता के आधार पर एक्सएमएल या प्रोग्रामेटिक रूप से पैडिंग सेट कर सकते हैं।

// this you can set inside your view. 
android:paddingLeft="5px" 
android:paddingRight="5px" 
android:paddingTop="10px" 
android:paddingBottom="10px" 

// this you can set to your any widgets like TextView/Layouts/Buttons etc.. 
setPadding(top, left, bottom, right); 
संबंधित मुद्दे