不能在android中使用srcCompat for ImageViews

Nee*_*raj 45 android imageview androiddesignsupport

我正在使用设计支持库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"  
      }  
     }
Run Code Online (Sandbox Code Playgroud)

正如它在这里指定的那样

但我不能将srcCompat属性用于我的imageview.

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:srcCompat="@drawable/wallpaper"/>
Run Code Online (Sandbox Code Playgroud)

其中@ drawable/wallpaper是一个矢量资源文件

<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"/>
Run Code Online (Sandbox Code Playgroud)

它说

错误:(14)在'android'包中找不到属性'srcCompat'的资源标识符

我的Gradle版本是1.5.我怎样才能使用srcCompat?

Bha*_*iya 114

android:srcCompat="@drawable/wallpaper"
Run Code Online (Sandbox Code Playgroud)

app:srcCompat="@drawable/wallpaper"
Run Code Online (Sandbox Code Playgroud)

因为它的srcCompat属性实际上是在AppCompat库中定义的.

重要的是,您需要为此添加适当的命名空间.

的xmlns:应用= "http://schemas.android.com/apk/res-auto"

重要

你得到的东西似乎只是一个可以忽略的lint错误.我试过并有同样的错误,但它工作正常.

您可以使用tools:ignore="MissingPrefix"以避免暂时看到此错误.

  • 但它说标签Imageview找到了意外的命名空间前缀"app",当我添加app:srcCompat ="@ drawable/wallpaper"时. (3认同)
  • 你需要在你的xml根标签中添加xmlns:app ="http://schemas.android.com/apk/res-auto". (2认同)

Mic*_*cro 30

将许多答案合并为一个答案:

<?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>
Run Code Online (Sandbox Code Playgroud)

这对我有用.没有lint错误.使用AppCompatImageView.

  • @Solace没有头绪.我没有使用eclipse进行android开发. (2认同)

Gar*_*ark 11

首先(在build.gradle中)

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)

第二

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_traffic_black_24dp"
    tools:ignore="MissingPrefix" />
Run Code Online (Sandbox Code Playgroud)

第三

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
Run Code Online (Sandbox Code Playgroud)

开始了.


van*_*223 6

我只是改变了:

app:srcCompat="@drawable/wallpaper"
Run Code Online (Sandbox Code Playgroud)

android:src="@drawable/wallpaper"
Run Code Online (Sandbox Code Playgroud)

这对我有用。