2010-03-09 8 views
9

यदि मैं "fill_parent" या "वज़न" का उपयोग करके दृश्य या बटन खींचता हूं तो मैं अपने बिटमैप को छवि दृश्य या छवि बटन में स्वचालित रूप से स्केल किए जाने से कैसे रोक सकता हूं?एंड्रॉइड: ImageView या ImageButton में छवि को स्केल करने से कैसे रोकें?

यह उपयोगी होगा, उदाहरण के लिए, स्क्रीन के शीर्ष पर एक 4-बटन टूलबार बनाने के लिए जहां बटन समान रूप से दूरी पर हैं, लेकिन बटन के अंदर की छवियां स्केल हो रही हैं भले ही मैं स्केल टाइप = "सेंटर" , जो डॉक्टर के अनुसार स्केलिंग को रोकना चाहिए, लेकिन ऐसा नहीं है।

किसी भी अंतर्दृष्टि की सराहना की जाती है!

धन्यवाद,

उत्तर

10

मुझे पता चला है कि एंड्रॉइड का उपयोग करते समय: पृष्ठभूमि स्वचालित रूप से उस छवि को स्केल करती है जिसे आप दृश्य के आकार में उपयोग कर रहे हैं।

मैंने छवि को देखने के लिए एंड्रॉइड का उपयोग करने की कोशिश की: src। छवि स्केल नहीं हुई थी, लेकिन मुझे दृश्य के आकार के सापेक्ष केंद्र में छवि नहीं मिल सका।

तो मैं पूरे बटन अपने आप रिश्तेदार लेआउट बनाने की कोशिश की और यह मैं क्या उपयोग किया जाता है:

<RelativeLayout android:id="@+id/RelativeLayout01" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent"> 
       <ImageButton android:id="@+id/ImageButton01"  
          android:layout_height="fill_parent" 
          android:layout_width="fill_parent"></ImageButton> 
       <ImageView android:id="@+id/ImageView01" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:background="@drawable/cardback1" 
          android:layout_centerInParent="true"></ImageView> 
</RelativeLayout> 

ImageButton पृष्ठभूमि में है और हमेशा लेआउट के रूप में एक ही आकार के हो जाएगा। इमेज व्यू हमेशा रिलेवेटिवआउट में केंद्रित रहेगा और स्केल नहीं करेगा। इस प्रकार रिलेवेटलाइट स्वयं बढ़ सकता है और आगे बढ़ सकता है और बटन के शीर्ष पर छवि हमेशा एक ही आकार में रहेगी, लेकिन बटन बढ़ेगा। यदि छवि स्वयं छवि से छोटी हो जाती है तो छवि कम हो जाएगी।

मुझे लगता है कि आप यही चाहते थे। ऐसा करने का एक बेहतर तरीका हो सकता है, लेकिन यह सब मैं अभी साथ आ सकता हूं।

+17

ऐसा करने की कोई आवश्यकता नहीं है, बस एंड्रॉइड का उपयोग न करें: पृष्ठभूमि। एंड्रॉइड का उपयोग करें: इसके बजाय src (ImageView), या एंड्रॉइड: drawableLeft/दाएं/नीचे/शीर्ष (बटन या छवि दृश्य), या एंड्रॉइड: बटन (छवि बटन)। –

+0

@ रोमेन: क्या हम 9-पैच को बटन पृष्ठभूमि के रूप में उपयोग नहीं कर सकते हैं जिसमें हम अपने बटन के आइकन हिस्से को अस्थिर और इसके आस-पास की सभी अतिरिक्त जगह (आइकन के चारों ओर पैडिंग) के रूप में चिह्नित करते हैं? ताकि जब पृष्ठभूमि फिर से आकार में हो तो अतिरिक्त भाग फैलाया जाता है? – Samuh

+1

धन्यवाद मैट और रोमेन, एंड्रॉइड: src बिल्कुल वही था जो मैं ढूंढ रहा था।यह चाल है :-) – user277827

2

छवि माप लिया जाता है, तो सुनिश्चित करें कि आप आपका ऐप्लिकेशन नहीं संगतता मोड में (उदाहरण के लिए यदि आप एंड्रॉयड 1.5/1.6 एकाधिक घनत्व के समर्थन के बिना लक्षित करते हैं और आप एंड्रॉयड 2.0 पर अनुप्रयोग चलाने के चल रहे हैं।)

3

बस अपना ड्रायबल संशोधित करें, एक बड़ी पारदर्शी पृष्ठभूमि लागू करें। कहें एचडीपीआई में मेरा ड्रायबल 41 * 48 पीएक्स icon.png है। मैंने एक पारदर्शी पृष्ठभूमि के साथ एक नई छवि 60 * 60 पीएक्स बनाई, पिछले icon.png को कॉपी-पेस्ट करें और उसी नाम के अंतर्गत सहेजें। इस तरह आपको अपने लेआउट को छूने की जरूरत नहीं है।

तो फिर तुम बटन क्षेत्र बड़ा जाँच अगर आप एक गैर पारदर्शीएंड्रॉयड आवेदन कर सकते हैं: पृष्ठभूमि:

<ImageButton android:id="@+id/widget_open" 
android:src="@drawable/icon_widget_arrow_up" 
android:background="#ff777777" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content"></ImageButton> 

एंड्रॉयड के लिए पिछले और नए drawable लागू करें: src, आप स्पष्ट रूप से देखना चाहिए ImageButton क्षेत्र।

वैसे, मैं एप को संगतता मोड में चला रहा हूं।

+0

अवांछित overdrawing.not उपयोग करने के लिए अनुशंसित नहीं है – Asthme

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