Android में ImageViews के लिए srcCompat का उपयोग नहीं कर सकते




androiddesignsupport (7)

2.0+ के लिए अपने gradle plugin को अपडेट करें

// Gradle Plugin 1.5  
android {  
     defaultConfig {  
          generatedDensities = []  
     }  

// This is handled for you by the 2.0+ Gradle Plugin  
     aaptOptions {  
          additionalParameters "--no-version-vectors"  
     }  

Google डेवलपर के ब्लॉग गाइड लाइनों के अनुसार

here

मैं डिजाइन सपोर्ट लाइब्रेरी 23.2 का उपयोग कर रहा हूं। मैंने अपने build.gradle में इन पंक्तियों को जोड़ दिया है क्योंकि मेरा Gradle Plugin संस्करण 1.5 है

defaultConfig {
        applicationId "com.abc.xyz"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        generatedDensities = []
    } 

      aaptOptions {  
        additionalParameters "--no-version-vectors"  
      }  
     }

जैसा कि इसमें निर्दिष्ट here

लेकिन मैं अपनी छवि के लिए srcCompat विशेषता का उपयोग नहीं कर सकता।

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:srcCompat="@drawable/wallpaper"/>

जहाँ @ drawable / वॉलपेपर एक वेक्टर संसाधन फ़ाइल है

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FF000000"
    android:pathData="M4,4h7V2H4c-1.1,0 -2,0.9 -2,2v7h2V4zm6,9l-4,5h12l-3,-4 -2.03,2.71L10,13zm7,-4.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S14,7.67 14,8.5s0.67,1.5 1.5,1.5S17,9.33 17,8.5zM20,2h-7v2h7v7h2V4c0,-1.1 -0.9,-2 -2,-2zm0,18h-7v2h7c1.1,0 2,-0.9 2,-2v-7h-2v7zM4,13H2v7c0,1.1 0.9,2 2,2h7v-2H4v-7z"/>

इसे कहते हैं

त्रुटि: (14) पैकेज 'android' में विशेषता 'srcCompat' के लिए कोई संसाधन पहचानकर्ता नहीं मिला

मेरा ग्रेडल संस्करण 1.5 है। मैं srcCompat का उपयोग कैसे कर सकता हूं?


आप android:srcCompat का उपयोग कर रहे हैं android:srcCompat । इसे app:srcCompat बजाय करना चाहिए app:srcCompat क्योंकि यह app:srcCompat भीतर परिभाषित एक विशेषता है, न कि android: भीतर android: नामस्थान।


कई उत्तरों को एक उत्तर में संयोजित करना:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:background="@color/primary">


    <android.support.v7.widget.AppCompatImageView
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:id="@+id/logoImageView"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        app:srcCompat="@drawable/my_logo_vector"
        android:tint="@color/white"
        />

</RelativeLayout>

इसने मेरे लिए काम किया। कोई लिंट त्रुटियाँ नहीं। AppCompatImageView उपयोग करें।


कॉल app:srcCompat बजाय android:srcCompat

नहीं

android:srcCompat="@drawable/your_image"

करना

app:srcCompat="@drawable/your_image"

आखिरकार

    <ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/wallpaper"/>

मेरा ग्रेडेल संस्करण 1.5 है

अपने ग्रेड संस्करण को अपग्रेड करें।

उपाय

Gradle Plugin 2.0+  
com.android.tools.build:gradle:2.0.0-beta2

वेक्टर ड्रॉबल्स आपको एक्सएमएल में परिभाषित एकल वेक्टर ग्राफिक के साथ कई पीएनजी परिसंपत्तियों को बदलने की अनुमति देते हैं। पहले लॉलीपॉप और उच्चतर उपकरणों तक सीमित रहते हुए, अब वेक्टरड्राएबल और एनीमेटेडवेक्टरड्रैबल दोनों दो नए सपोर्ट लाइब्रेरी सपोर्ट-वेक्टर-ड्रायबल और सपोर्ट-एनिमेटेड-वेक्टर-ड्रॉएबल के माध्यम से उपलब्ध हैं।

इसे जोड़ो

    // Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 } 

आप इस नई विशेषता को केवल ग्रैडल प्लगिन के संस्करण 2.0 में मौजूद हैं। यदि आप ग्रैडल 1.5 का उपयोग कर रहे हैं तो आप इसके बजाय उपयोग करेंगे

// Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 }  

here माध्यम से जाएं


मैंने अभी-अभी बदला:

app:srcCompat="@drawable/wallpaper"

सेवा मेरे

android:src="@drawable/wallpaper"

इसने मेरे लिए काम किया।


वहाँ कई चीजें हैं जो आपको सबसे पहले उपयोग के बारे में परवाह है:

defaultConfig {
            vectorDrawables.useSupportLibrary = true
        }

या

vectorDrawables {
        useSupportLibrary = true
    }

और दूसरा उपयोग

 <android.support.v7.widget.AppCompatImageView
                android:id="@+id/changeLanguages"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:adjustViewBounds="true"
                android:background="@color/transparent"
                android:scaleType="fitCenter"
                app:srcCompat="@drawable/ic_transfer" />

हमेशा AppCompatImageView या Button का उपयोग करें क्योंकि वेक्टर इमेज Simple ImageView द्वारा समर्थित नहीं है

यदि उपरोक्त सभी तरीके काम नहीं करते हैं तो उपयोग करें

public class App extends Application {

  @Override public void onCreate() {
    super.onCreate();

    // Make sure we use vector drawables
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  }
}

यदि आप गतिविधि का उपयोग कर रहे हैं तो AppCompatActivty के साथ अपनी गतिविधि का विस्तार करें

public final class MainActivity extends AppCompatActivity {    
  @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
  }
}

नहीं

android:srcCompat="@drawable/wallpaper"

करना

app:srcCompat="@drawable/wallpaper"

क्योंकि यह srcCompat विशेषता वास्तव में AppCompat लाइब्रेरी के भीतर परिभाषित किया गया है।

महत्वपूर्ण आपको इसके लिए उपयुक्त नाम स्थान जोड़ने की आवश्यकता होगी।

xmlns: एप्लिकेशन = "http://schemas.android.com/apk/res-auto"

जरूरी

आपको जो मिल रहा है, ऐसा लगता है कि यह सिर्फ एक लिंट त्रुटि है जिसे अनदेखा किया जा सकता है। मैंने कोशिश की है और एक ही त्रुटि है, लेकिन यह सही ढंग से काम कर रहा है।

आप अस्थायी रूप से इस त्रुटि को देखने से बचने के लिए tools:ignore="MissingPrefix" का उपयोग कर सकते हैं।





androiddesignsupport