2016-12-12 9 views
9

मैं एंड्रॉयड स्टूडियो में एक imageView करने के लिए कुछ vectorDrawables सेट करना चाहते हैं।imageView के लिए एक छवि के रूप VectorDrawable स्थापित करने के लिए कैसे प्रोग्राम के रूप में

मैं आसानी से png और जेपीजी drawable सेट कर सकते हैं, लेकिन जब मैं VectorDrawable सेट करना चाहते हैं, यह imageView पर काम नहीं करता।

img.setImageResource(R.drawable.ic_home); 

ic_home वेक्टर ड्रायबल है और यह कोड काम नहीं करता है।

+1

पढ़ें https://blog.stylingandroid.com/vectordrawables-part-1/ –

+0

मैंने यहां उत्तर दिया है, यह सहायता हो सकती है। अब वेक्टर वेक्टर को बदल सकते हैं। http://stackoverflow.com/a/42281780/4517450 –

उत्तर

12

आधिकारिक android developer blog के अनुसार, vectorDrawables के लिए रनटाइम पर setImageResource() विधि के लिए कोई परिवर्तन नहीं है। वहाँ कोई बदलाव नहीं -

आप रनटाइम पर ड्रॉएबल बदल रहे हैं, तो आप पहले की तरह ही setImageResource() विधि का उपयोग करने में सक्षम हो जाएगा। AppCompat और एप्लिकेशन का उपयोग करना: srcCompat अपने एप्लिकेशन में वेक्टर ड्रॉएबल को एकीकृत करने की सबसे सरल विधि है।

अधिक जानकारी के लिए, Google डेवलपर द्वारा यह अच्छा लेख AppCompat — Age of the vectors चेकआउट करें।

6

अगर आप पश्चगामी संगतता को लेकर चिंतित हैं तो आप AppCompatImageView बजाय पीएफ छवि दृश्य का उपयोग करना चाहिए। नीचे दिए गए कोड के माध्यम से जाना।

<android.support.v7.widget.AppCompatImageView 
    android:id="@+id/iv_about" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    /> 

जावा

AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about); 
image.setImageResource(); 

और यह app:srcCompat के परिप्रेक्ष्य में काम करेगा।

+2

दस्तावेज के अनुसार, इसके लिए कोई ज़रूरत नहीं है "जब आप अपने लेआउट में ImageView का उपयोग करते हैं तो यह स्वचालित रूप से उपयोग किया जाएगा और शीर्ष-स्तरीय गतिविधि/संवाद एपकोम्पेट द्वारा प्रदान किया जाता है। कस्टम विचार लिखते समय आपको केवल इस कक्षा का उपयोग करने की आवश्यकता होनी चाहिए। " तो आप केवल छवि दृश्य का उपयोग तब तक कर सकते हैं जब तक आप इसे विस्तारित नहीं कर लेते। – Adrian

+0

@ user924 आप सही हैं। –

+0

@ user924 मैंने यह निर्दिष्ट नहीं किया है कि जब तक गतिविधि AppCompatActivity को बढ़ाती है तब तक आप ImageView का उपयोग कर सकते हैं। यदि आपका नहीं है, तो ऐसा लगता है जैसे आपने कहा था। – Adrian

20

आप वेक्टर ड्रॉएबल उपयोग करना चाहते हैं (कम या एपीआई 21 से अधिक) बस निम्न करें:

प्रोग्राम के रूप में छवि सेट करें (अपनी गतिविधि में जैसे):

imageView.setImageResource(R.drawable.ic_left_arrow_blue); 

या एक्सएमएल से:

app:srcCompat="@drawable/your_vector_name" 

को अपने ऐप्लिकेशन के build.gradle में आप शामिल करने की जरूरत:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

और कम एपीआई 21 के लिए वेक्टर समर्थन के लिए, onCreate में जोड़ने के निम्नलिखित:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
+3

अभी भी किटकैट के लिए काम नहीं करता है, केवल> = 5.1 के लिए यह किटकैट के लिए 'setImageResource' – user924

+0

' के साथ ठीक काम करता है, यह केवल https://stackoverflow.com/a/35918375/7767664 पर काम करता है – user924

1

मैं recycler ध्यान में रखते हुए एक वेक्टर मैं img.setImageResource (R.drawable.ic_home) का उपयोग कर रहा था जो फ्लॉप ठीक से काम किया जैसे कुछ अन्य छवि recycler देखने के कुछ आइटम में गठन हो तो मैं img.setImageDrawable (activity.getResources()। getDrawable (R.drawable.ic_home)) इस काम किया करते थे।

0

उपयोग android.support.v7.widget.AppCompatImageButton, android.support.v7.widget.AppCompatImageView, android.support.v7.widget।AppCompatTextView बजाय ImageButton, imageView आदि यदि वेक्टर प्रकार छवि प्रयोग किया जाता है।

मुख्य रूप से कस्टम विचारों के लिए।

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