2010-05-19 10 views
11

मैं एक छवि दृश्य को बढ़ाने की कोशिश कर रहा हूं जो एक ड्रायरेबल को स्केल करता है जिसे मैं गैलरी व्यू में प्रदर्शित कर सकता हूं। दृश्य को बढ़ाने के लिए मेरा कोड ठीक काम करता प्रतीत होता है, सिवाय इसके कि ImageView के गुण लागू नहीं हैं। विशेष रूप से, फुले हुए इमेज व्यू में चौड़ाई/ऊंचाई नहीं है जिसे मैंने एंड्रॉइड के माध्यम से सेट किया है: एक्सएमएल में लेआउट पैराम्स।गैलरी व्यू में डालने के लिए इन्फ्लेटेड छवि दृश्य सही आकार नहीं है

क्या कोई मुझे दिखा सकता है कि मैं क्या गलत कर रहा हूं?

मैं डीपी में छवि की चौड़ाई/ऊंचाई सेट करना चाहता हूं, ताकि यह एकाधिक स्क्रीन डीपीआईएस में सही आकार हो और एंड्रॉइड 1.5+ का समर्थन करे। नतीजतन मैं की तरह कुछ का उपयोग नहीं कर सकते हैं:

i.setLayoutParams(new Gallery.LayoutParams(150, 116) 

मेरे लेआउट परिभाषा है:

<?xml version="1.0" encoding="utf-8"?> 
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="150dp" android:layout_height="116dp" 
    android:background="@drawable/gallery_item_background" 
    android:scaleType="fitXY" /> 
</ImageView> 

और टुकड़ा मैं imageView को बढ़ाने के लिए उपयोग कर रहा हूँ है:

public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = getLayoutInflater(); 
     ImageView i = (ImageView) inflater.inflate(R.layout.gallery_item, null); 
     i.setImageResource(mImageIds.get(position)); 
     i.setScaleType(ImageView.ScaleType.FIT_XY); 

     return i; 
    } 
+0

इस पल के लिए मैंने DisplayMetrics.density का उपयोग करके एक समाधान हैक किया। फ्लोट डेन = mDisplayMetrics.density; कन्वर्टव्यू.सेट लयआउट पैराम (नई गैलरी। लयआउट पैराम्स ((int) (den * 150), (int) (den * 116))); – Richard

उत्तर

24

चाल बस inflate() के निम्न संस्करण का उपयोग करने के लिए है। बनाने और इसलिए अनदेखा करने के लिए सभी android:layout_ एक्सएमएल गुण। आखिरी पैरामीटर बस inflater को तुरंत माता-पिता को फुले हुए दृश्य को जोड़ने के लिए नहीं कहता है। यदि आप सच हो जाते हैं (कम से कम एडाप्टर के getView() विधि के अंदर), बुरी चीजें घटित होंगी।

1

मैं यकीन नहीं है लेकिन यह काम कर सकता है। (अपने xml में अपने imageView को एक आईडी दें कहते हैं कि यह है "@ + आईडी/छवि":

public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = getLayoutInflater(); 
    View view = (View) inflater.inflate(R.layout.gallery_item, null); 
    ImageView i = (ImageView) view.findViewById(R.id.image); 
    i.setImageResource(mImageIds.get(position)); 
    i.setScaleType(ImageView.ScaleType.FIT_XY); 

    return view; 
} 

जिस तरह से आप यह जाँच का अनुकूलन करना चाहिए द्वारा यदि convertView देखे जाने की संख्या पुनरावृत्ति करने में रिक्त है इस की जाँच करें:। http://code.google.com/events/io/2009/sessions/TurboChargeUiAndroidFast.html ,

inflater.inflate(R.layout.gallery_item, parent, false); 

पिछले दो मापदंडों अनिवार्य हैं आप पारित "अशक्त" माता पिता के रूप हैं inflater लेआउट मापदंडों किस प्रकार पता नहीं है:

+0

मैंने अपनी छवि दृश्य में कोई आईडी जोड़ने का प्रयास नहीं किया :-( – Richard

+1

बीटीडब्लू व्यू रीसाइक्लिंग पर ग्रेट टिप। – Richard

+0

मैंने कुछ समान बना दिया लेकिन प्रति तत्व कस्टम लेआउट के साथ ग्रिडव्यू का उपयोग किया: एक छविदृश्य और नीचे एक पाठ। चौड़ाई और xml फ़ाइल में ऊंचाई मेरे लिए काम कर रही थी। बीटीडब्ल्यू क्या आप निश्चित हैं कि इसमें कोई फर्क नहीं पड़ता है? दोनों के लिए 20 डीप की तरह कुछ डालने का प्रयास करें और जांचें कि क्या आप कोई बदलाव देखते हैं, और 300 डीआईपी जैसे कुछ उच्च मूल्यों को आजमाएं। –