Подтвердить что ты не робот

Невозможно использовать srcCompat для ImageViews в android

Я использую библиотеку поддержки дизайна 23.2. Я добавил эти строки в мой build.gradle, поскольку мой плагин Gradle - версия 1.5

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

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

как указано в здесь

Но я не могу использовать атрибут srcCompat для своего изображения.

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

где @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"/>

В нем говорится

Ошибка: (14) Идентификатор ресурса не найден для атрибута 'srcCompat' в пакет 'android'

Моя версия Gradle - 1.5. Как использовать srcCompat?

4b9b3361

Ответ 1

Не

android:srcCompat="@drawable/wallpaper"

Do

app:srcCompat="@drawable/wallpaper"

поскольку атрибут srcCompat фактически определен в библиотеке AppCompat.

Важно, вам нужно добавить соответствующее пространство имен для этого.

XMLNS: приложение = "http://schemas.android.com/apk/res-auto"

Внимание!

то, что вы получаете, похоже, что это просто ошибка ворса, которая может быть игнорируются. Я пробовал и имею ту же ошибку, но работает правильно.

вы можете использовать tools:ignore="MissingPrefix", чтобы временно не видеть эту ошибку.

Ответ 2

Объединяя много ответов в один ответ:

<?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.

Ответ 3

Сначала (в build.gradle)

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

Второй

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_traffic_black_24dp"
    tools:ignore="MissingPrefix" />

Третий

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"

Здесь мы идем.

Ответ 4

Я только что изменил:

app:srcCompat="@drawable/wallpaper"

к

android:src="@drawable/wallpaper"

Это сработало для меня.

Ответ 5

Вызовите app:srcCompat вместо android:srcCompat.

Не

android:srcCompat="@drawable/your_image"

DO

app:srcCompat="@drawable/your_image"

Наконец

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

Моя версия gradle составляет 1,5

Обновите версию Gradle.

Решение

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

Векторные образы позволяют вам заменить несколько активов png на один векторный рисунок, определенный в XML. Хотя ранее Lollipop и более высокие устройства, как VectorDrawable, так и AnimatedVectorDrawable теперь доступен через две новые версии поддержки Поддержка библиотек-векторных и поддержка анимированного вектор-вытяжка.

Добавьте это

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

Вы отметите, что этот новый атрибут существует только в версии 2.0 плагина gradle. Если вы используете gradle 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"  
  }  
 }  

Перейти через Поддержка векторных чертежей

Ответ 6

Есть несколько вещей, о которых вы должны заботиться Прежде всего используйте:

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);
  }
}

Если вы используете Activity, расширьте свою активность с помощью AppCompatActivty

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

    setContentView(R.layout.activity_main);
  }
}

Ответ 7

Вы используете android:srcCompat. Он должен вместо этого app:srcCompat, поскольку он является атрибутом, определенным в AppCompat, а не в пространстве имен android:.

Ответ 8

обновите плагин gradle до 2.0 +

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

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

в соответствии с заголовком руководства разработчика Google.

http://android-developers.blogspot.in/2016/02/android-support-library-232.html

Ответ 9

От, Сайт разработчика Android

Эта библиотека теперь является зависимостью v7 AppCompat library, позволяя разработчикам и AppCompat легко использовать векторные чертежи.

Чтобы использовать VectorDrawableCompat в ImageButton или ImageView, использовать атрибут app: srcCompat XML или setImageResource().

Чтобы ссылаться на идентификаторы атрибутов на уровне API 20 или ниже, добавьте следующий флаг appt в ваш файл сборки, gradle:

Если вы создаете Android-плагин для Gradle 1.5.0 или ниже, добавьте в файл build.gradle следующее:

android {
  defaultConfig {
    // Stops the Gradle’s automatic rasterization of vectors
    generatedDensities = []
  }
   // Flag that tells aapt to keep the attribute ids
  aaptOptions {
    additionalParameters "--no-version-vectors"
  }
}

Если вы создаете Android-плагин для Gradle 2.0.0 или выше, добавьте в файл build.gradle следующее:

android {
  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }
}

Ответ 10

вам нужно добавить

XMLNS: приложение = "http://schemas.android.com/apk/res-auto"

к вашему макету для его работы. Мое "приложение: srcCompat" было выделено красным цветом, пока я не добавил его.

Ответ 11

Убедитесь, что картинка, которую вы пытаетесь использовать, имеет формат PNG.

Скопируйте картинку.

Перейдите к mipmap на вкладке 1.Project в иерархии Android.

Нажмите один раз на mipmap (в Windows ctrl + v), когда вы называете фотографию, убедитесь, что строчные буквы указаны без символов.

Фотография должна быть полезной.

Настройте вид изображения (возможно, вам придется временно использовать цвет заливки).

Нажмите на imageView, а затем нажмите на srcCompact (тот, у которого нет кисти и введите @mipmap/"Имя вашего изображения" (этот шаг находится на вкладке атрибутов)

Это должно работать!

Если вам нужно описание контента, я просто использовал @String/StringPicture