2012-01-03 11 views
15

मैं इस सरल लेआउट एक्सएमएल, और एक green_square.png फ़ाइल है जो 30x30 पिक्सल से परहेजअधिकतम उपलब्ध चौड़ाई के लिए एक छवि स्केलिंग, पहलू अनुपात रखने और imageView अतिरिक्त स्थान

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:background="@color/red" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:adjustViewBounds="true" 
     android:scaleType="fitStart" 
     android:src="@drawable/green_square"/> 

</LinearLayout> 

मैं क्या हासिल करने की कोशिश कर रहा हूँ ImageView की कोई अतिरिक्त जगह के साथ, इसके पहलू अनुपात को रखते हुए, पैरेंट चौड़ाई को भरने के लिए छवि को स्केल कर रहा है।

मैंने उस अतिरिक्त स्थान के संदर्भ में छवि दृश्य में एक लाल पृष्ठभूमि जोड़ा है जिसे मैं टालना चाहता हूं।

Here is my goal

+4

कोशिश 'एंड्रॉयड: adjustViewBounds =" true "' – sebataz

+0

धन्यवाद, कि मैं क्या सोचा है, लेकिन यह, पहले से ही वहाँ –

+0

ऐसा लगता है कि इस मुद्दे की तरह बहुत से उपयोगकर्ताओं को गुस्सा दिलाना है है इस लिंक की जाँच http: // समूहों। google.com/group/android-developers/browse_thread/thread/89d21a582ebc5b21 –

उत्तर

-1

उपयोग पैमाने प्रकार "fitCenter" या "fitxy"

+1

उत्तर के लिए धन्यवाद, हालांकि, फिट सेंटर बस देखने के दृश्य को केंद्रित करता है बस नीचे की तरफ ऊपर और नीचे मार्जिन (अगर फिटस्टार्ट का उपयोग कर रहे हों) और fitXY छवि को इसके अनुपात को खो देता है। –

+0

कोई अन्य विचार? –

+0

आप बिटमैपफैक्टरी के माध्यम से कोड बनाकर बिटमैप छवि को सेट कर सकते हैं, लेकिन आप पूर्ण स्क्रीन में 30X30 पिक्सेल छवि फिट नहीं कर सकते हैं, इसके पहलू अनुपात को नुकसान पहुंचाए बिना। बिटमैप छवि बनाने के लिए बिटमैप फैक्टोई का उपयोग करें और फिर बिटमैप से स्केल छवि बनाएं फ़ंक्शन बनाएं इससे आपकी मदद मिलेगी .. http://developer.android.com/reference/android/graphics/Bitmap.html और http://developer.android .com/संदर्भ/एंड्रॉइड/ग्राफिक्स/बिटमैपफ़ैक्टरी.html – loks

-4

इस प्रयास करें,

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<ImageView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/red" 
    android:scaleType="centerCrop" 
    android:src="@drawable/green_square" /> 

</LinearLayout> 
+0

सुझाव के लिए धन्यवाद, हालांकि यह लेआउट पूरे दृश्य को भरता है। यहां मैं https://lh6.googleusercontent.com/-0UaWzbAvVkA/TwLdxtHZx6I/AAAAAAAAByA/YQh5Ein-2Fs/w500-h423-k/screen-shot प्राप्त करना चाहता हूं।jpg –

+0

उचित विवरण की कमी के कारण डाउन-वोट किया गया। यह सिर्फ कोड का एक हिस्सा है, जवाब नहीं। –

+0

@ किंग आरवी - कोई विचार? –

0

मेरे विचार में, यह ImageView अतिरिक्त लेआउट एक बग है। मेरे साथ भी यही बात हुई थी। नतीजतन, पाठ जो मैं green_square का पालन करना चाहता था अतिरिक्त लेआउट का पालन किया। तो मैंने जो किया वह स्क्रीन के नीचे से संबंधित पाठ निर्दिष्ट किया गया था। इस तरह, पाठ अतिरिक्त लेआउट पर जाना होगा। मैं मानता हूं, यह सबसे अच्छा समाधान नहीं था, लेकिन यह green_square और टेक्स्ट के बीच एक विशाल स्थान होने से कहीं बेहतर दिखता है।

31
<ImageView 
     android:id="@+id/game" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:scaleType="centerCrop" 
     android:adjustViewBounds="true" 
     android:src="@drawable/ic_game" 
     /> 

यह मेरे लिए काम करता है। पहलू अनुपात रखने के लिए माता-पिता और केंद्र फसल की पूर्ण चौड़ाई

+2

मेरे लिए काम किया। स्वीकार्य समाधान होना चाहिए। धन्यवाद! –

+3

'सेंटरक्रॉप' छवि को पूरी चौड़ाई तक फैलाता है, लेकिन संभवतः ऊपर और नीचे फसल की संभावना है क्योंकि _view_ मूल ऊंचाई को अभी भी रखता है, लेकिन छवि पहलू अनुपात रखा जाता है, इसलिए यह squashed या stretched नहीं है। 'adjustViewBounds' वास्तविक फसल से बचने के लिए ऊंचाई बढ़ने की अनुमति देता है और _view_ छवि के पहलू अनुपात को भी रखता है। एक साथ प्रयुक्त, वे ओपी के लिए क्या आवश्यक है। – lilbyrdie

+0

'fitXY' के लिए 'सेंटरक्रॉप' को प्रतिस्थापित करने में मुझे कोई फर्क नहीं पड़ता। वहां क्या अंतर है? –

0

यह इतना आसान है। बस चौड़ाई fill_parent और ऊंचाई wrap_content बनाओ। यहां मैंने इसे समझ लिया है।

<ImageView 
    android:id="@+id/game" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:scaleType="centerCrop" 
    android:adjustViewBounds="true" 
    android:src="@drawable/ic_game" 
    /> 
संबंधित मुद्दे