Android imageview maxWidth का सम्मान नहीं कर रहा है?


113

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

मैंने यह कोशिश की,

<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 को बहुत बड़ा बना दिया, हो सकता है कि उसने छवि की आंतरिक चौड़ाई और इसे सेट करने के लिए wra_content का उपयोग किया हो - वैसे भी, यह मेरी अधिकतम विशेषता का सम्मान नहीं करता था .. क्या यह केवल कुछ प्रकार के कंटेनरों के अंदर काम करता है? यह एक LinearLayout में है ...

कोई सुझाव?

जवाबों:


302

आह,

android:adjustViewBounds="true"

अधिकतम काम करने के लिए आवश्यक है।

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


साझा करने के लिए thx, क्या आप अपने उत्तर को सही के रूप में चिह्नित कर सकते हैं !?
वॉरेनफैथ

1
थैंक्स ए लॉट .. मेरे लिए अच्छी तरह से काम किया :)
नीरव डांगी

7
और प्रोग्रामेटिक रूप से: imageView.setAdjustViewBounds (true);
सिरिल जैक्वार्ट

7
इस खोज में आने वाले किसी भी व्यक्ति के लिए यह काम नहीं करता है, सुनिश्चित करें कि match_parent के लिए चौड़ाई / ऊँचाई निर्धारित नहीं है।
केविन वर्थ

और यहाँ मैं AOSP के विशेष आंतरिक ImageView को चुरा रहा हूँ जो कि इन सीमाओं का सम्मान करने के लिए बनाया गया था।
द वेंडर

4

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
AdjustViewBounds मेरे लिए एक match_parent चौड़ाई के साथ ठीक काम करने लगता है।
कोरी पेटोस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.