2010-08-20 9 views
100

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

मैं इस कोशिश की,

<ImageView android:id="@+id/menu_profile_picture" 
    android:layout_width="wrap_content" 
    android:maxWidth="60dip" 
    android:layout_height="fill_parent" 
    android:layout_marginLeft="2dip" 
    android:padding="4dip" 
    android:scaleType="centerInside" 
    android:background="@drawable/menubar_button" 
    android:layout_centerVertical="true"/> 

लेकिन वह imageView किसी कारण से सुपर बड़े हो गए, हो सकता है यह निर्धारित करने के लिए छवि और wrap_content के आंतरिक चौड़ाई इस्तेमाल किया - वैसे भी, यह मेरी maxWidth सम्मान नहीं किया विशेषता .. क्या यह केवल कुछ प्रकार के कंटेनर के अंदर काम करता है? यह एक LinearLayout में है ...

कोई सुझाव? maxWidth काम करने के लिए

उत्तर

259

आह,

android:adjustViewBounds="true" 

की आवश्यकता है।

अब काम करता है!

+0

साझा करने के लिए THX, आप सही एक कृपया के रूप में अपने जवाब चिह्नित कर सकते हैं !? – WarrenFaith

+0

मेरे लिए कामकाजी काम !! –

+1

बहुत बहुत धन्यवाद .. मेरे लिए अच्छा काम किया :) –

1

स्थापना adjustViewBounds मदद नहीं करता है अगर आप match_parent उपयोग करें, लेकिन वैकल्पिक हल सरल कस्टम ImageView है:


public class LimitedWidthImageView extends ImageView { 
    public LimitedWidthImageView(Context context) { 
     super(context); 
    } 

    public LimitedWidthImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public LimitedWidthImageView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int specWidth = MeasureSpec.getSize(widthMeasureSpec); 
     int maxWidth = getMaxWidth(); 
     if (specWidth > maxWidth) { 
      widthMeasureSpec = MeasureSpec.makeMeasureSpec(maxWidth, 
        MeasureSpec.getMode(widthMeasureSpec)); 
     } 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
} 
+1

एडजस्टव्यूबाउंड मेरे लिए एक मैच_पैर चौड़ाई के साथ ठीक काम करता प्रतीत होता है। –

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