2011-03-23 20 views
15

मैं बाईं ओर ImageView के साथ EditText एकल पंक्ति में स्थानांतरित करने की कोशिश कर रहा हूं। लेकिन टेक्स्ट प्रविष्टि की ऊंचाई से मेल खाने के लिए छवि को ठीक से स्केल नहीं किया जा सकता है।ImageView: adjustViewBounds layout_height = "fill_parent" के साथ काम नहीं करता है?

लेआउट सरल है:

<LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <ImageView 
      android:id="@+id/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:adjustViewBounds="true" 
      android:scaleType="fitStart" 
      android:background="#f00" 
      android:src="@drawable/icon" /> 
     <EditText 
      android:id="@+id/text" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

(मैं लाल रंग से छवि पृष्ठभूमि पर प्रकाश डाला वास्तविक imageView द्वारा आबंटित स्थान को देखने के लिए)


अगर मैं ImageView के लिए सटीक ऊंचाई निर्दिष्ट करें:

  android:layout_height="48dp" 

तो मुझे सबसे नज़दीकी दृश्य मिलता है जो मुझे चाहिए घ: enter image description here

लेकिन मैं EditText की सही ऊंचाई नहीं जानते हैं, तो मैं यह ImageView यहाँ निर्दिष्ट नहीं कर सकते।


जब ImageView के लिए ऊंचाई अपनी मूल (मिलान करने के लिए `` EditText` ऊंचाई) को भरने के लिए निर्दिष्ट किया जाता है:

  android:layout_height="fill_parent" 

तो मैं छवि और पाठ प्रविष्टि के बीच अप्रत्याशित अतिरिक्त मार्जिन मिलता है: enter image description here

असल में, इस मामले में ImageView चौड़ाई असीमित छवि चौड़ाई के बराबर होती है, जबकि छवि को स्केल किया गया था।

  android:layout_height="48dp" 
      android:adjustViewBounds="false" 

enter image description here


तो, सवाल यहाँ है:


यह अगर मैं 48dp को layout_height निर्दिष्ट और सेट समान नीचे दिखाया गया चित्र के adjustViewBoundsfalse करने के लिए कैसे करने के लिए संपादन प्रविष्टि ऊंचाई और एक ही समय में मिलान करने के लिए छवि को स्केल करने के लिए सही ढंग से लेआउट को परिभाषित करें स्केल की गई छवि चौड़ाई के लिए ImageView की चौड़ाई कम हो जाएगी? दूसरे शब्दों में यह अतिरिक्त जगह कैसे छुटकारा पाएं?

+0

एंड्रॉइड का उपयोग करने का प्रयास करने की आवश्यकता होगी: imageview –

+0

@JSE के लिए layout_marginBottom = "10dip" यह कैसे मदद करेगा? मुझे छोटी छवि मिल जाएगी लेकिन आसपास के अतिरिक्त स्थान के साथ। – GrAnd

+0

ImageView के लिए scaleType = "fitXY" और ऊंचाई = "fill_parent" का उपयोग करने का प्रयास करें। – Karan

उत्तर

0

आप भी गुरुत्वाकर्षण डाल सकते हैं रेखीय लेआउट पर केंद्रित किए जाने की

नोट: है कि आप भी ड्रॉएबल-hdpi/ldpi और mdpi में विभिन्न छवियों

7

यह वह जगह है होना चाहिए एक LinearLayout बग। यदि आप here स्रोत में forceUniformHeight देखते हैं। आप देख सकते हैं कि बच्चे के विचारों को आकार देने के लिए match_parent की ऊंचाई के रूप में जब लाइनरलाइट wrap_content पर सेट किया गया है, तो लाइनरलाइट में पूर्ण ऊंचाई होने का नाटक होता है, बच्चे की ऊंचाई को पुन: गणना करता है और फिर पिछले माप पास से बच्चे की चौड़ाई का पुन: उपयोग करता है।असल में आपकी छवि ऊंचाई और चौड़ाई की गणना नहीं कर रही है और डिफ़ॉल्ट चौड़ाई और ऊंचाई प्राप्त कर रही है, और उसके बाद ऊंचाई को फिर से गणना की जा रही है लेकिन पुरानी चौड़ाई का उपयोग करने के लिए मजबूर होना पड़ रहा है। आपको कुछ ऊंचाई onMeasures

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