5

यह मुझे पागल कर रहा है। मैं एक छवि दृश्य में इसका उपयोग करने के लिए प्रोग्रामेटिक रूप से एक एक्सएमएल वेक्टर ड्रॉबल आइकन का आकार बदलने में सक्षम होना चाहता हूं।एंड्रॉइड कैसे आकार (स्केल) एक एक्सएमएल वेक्टर आइकन प्रोग्रामेटिक रूप से

यह वही है मैं अब तक जो काम नहीं कर रहा

Drawable drawable = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_marker,null); 
drawable.setBounds(0,0,512,512); 
imageVenue.setImageDrawable(drawable); 

वेक्टर आइकन ic_marker आकार नहीं बदला है किया है है। यह हर बार हार्डकोडेड चौड़ाई और ऊंचाई मान रखता है।

कोई विचार?

उत्तर

2

आप अपने छविदृश्य की चौड़ाई और ऊंचाई को प्रोग्रामेटिक रूप से बदल सकते हैं। चूंकि वेक्टर ड्रॉबल्स छवि की मूल गुणवत्ता को संरक्षित रखेगा, इससे वांछित आउटपुट घटित होगा।

ImageView iv = (ImageView) findViewById(R.id.imgview); 
int width = 60; 
int height = 60; 
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,height); 
iv.setLayoutParams(params); 
+2

धन्यवाद। हालांकि यह समाधान बहुत अच्छा काम करता है, मैं एक विकल्प की उम्मीद कर रहा था जहां मैं सीधे अपने ड्रॉबल को स्केल करता हूं और फिर इसे इमेजव्यू पैराम्स के साथ गड़बड़ किए बिना इमेजव्यू में रखता हूं। मैं इस पर एक शोध करने वाला हूं और यदि मैं जिस तरह से चाहता हूं उसे प्राप्त करना असंभव है, तो मैं आपके उत्तर – ThanosFisherman

+0

स्वीकार करूंगा, मैं अलग-अलग उपकरणों के लिए अलग-अलग आकारों के साथ विभिन्न चित्रों के रूप में विभिन्न पीएनजी फ़ाइलों का उपयोग करने की अनुशंसा करता हूं। जाने का रास्ता :) –

+4

हाँ मुझे पता है, लेकिन मेरा पूरा बिंदु वेक्टर ड्रॉबल्स का उपयोग करना है ताकि मुझे विभिन्न आकारों के साथ पीएनजी फाइलों की आवश्यकता न हो – ThanosFisherman

0

मुझे वर्तमान में एक ही समस्या का सामना करना पड़ रहा है।

मैं ऐसा कुछ करने की कोशिश कर रहा हूं, क्योंकि व्यूपैरेंट वास्तव में ऊंचाई स्पष्ट रूप से सेट है, इसलिए मैं match_parent का उपयोग करता हूं और मार्जिन सेट करता हूं। हालांकि यह हर समय काम नहीं करता है, क्योंकि मैं रीसाइक्लर व्यू के लिए व्यूअरधारक में इस दृश्य का उपयोग करता हूं ... मैंने यह भी देखा है कि कभी-कभी मुझे कलाकृतियों के साथ स्केल किए गए संस्करण को देखते हैं, कभी-कभी पूर्ण आकार, कभी-कभी मार्जिन होते हैं, और बड़े होते हैं मार्जिन ... लेकिन यदि आप इसे सरल परिदृश्य में उपयोग करते हैं, तो यह अभी भी आपके लिए काम कर सकता है।

mImageViewFront.setImageDrawable(vectorDrawable); 
final int paddingLR = mImageViewFront.getWidth()/4; 
final int paddingTB = mImageViewFront.getHeight()/4; 
LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
params.setMargins(paddingLR, paddingTB, paddingLR, paddingTB); 
mImageViewFront.setLayoutParams(params); 
संबंधित मुद्दे