Невозможно использовать 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?
Ответы
Ответ 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