collapsible - expandable toolbar android
No se puede usar srcCompat para ImageViews en Android (10)
Estoy usando Design Support Library 23.2. He agregado estas líneas en mi build.gradle ya que mi Gradle Plugin es la versión 1.5
defaultConfig {
applicationId "com.abc.xyz"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
generatedDensities = []
}
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
como se especifica here
Pero no puedo usar el atributo srcCompat para mi imagen.
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:srcCompat="@drawable/wallpaper"/>
donde @ drawable / wallpaper es un archivo de recursos vectoriales
<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"/>
Dice
Error: (14) No se encontró un identificador de recurso para el atributo ''srcCompat'' en el paquete ''android''
Mi versión de Gradle es 1.5. ¿Cómo puedo usar srcCompat?
Acabo de cambiar:
app:srcCompat="@drawable/wallpaper"
a
android:src="@drawable/wallpaper"
Esto funcionó para mí.
Combinando muchas respuestas en una respuesta:
<?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>
Esto funcionó para mí. No hay errores de pelusa Use AppCompatImageView
.
Desde el sitio para desarrolladores de Android
Esta biblioteca es ahora una dependencia de la v7 AppCompat library
, lo que permite a los desarrolladores y a AppCompat usar fácilmente los vectores arrastrables.
Para utilizar VectorDrawableCompat dentro de ImageButton o ImageView, use la aplicación: srcCompat XML attribute o setImageResource () method.
Para seguir haciendo referencia a los ID de los atributos en el nivel de API 20 o inferior, agregue el siguiente indicador de appt a su compilación, archivo gradle:
Si está compilando con el complemento de Android para Gradle 1.5.0 o una versión anterior , agregue lo siguiente a su archivo 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"
}
}
Si está compilando con el complemento de Android para Gradle 2.0.0 o superior , agregue lo siguiente a su archivo build.gradle:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Estás usando android:srcCompat
. En su lugar, debe app:srcCompat
ya que es un atributo definido dentro de AppCompat, no dentro del android:
namespace.
Primero (en build.gradle)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Segundo
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/ic_traffic_black_24dp"
tools:ignore="MissingPrefix" />
Tercero
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
Aquí vamos.
actualiza tu plugin de gradle a 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"
}
según las líneas guía de blog del desarrollador de Google
hay varias cosas que debes preocuparte antes de nada:
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
o
vectorDrawables {
useSupportLibrary = true
}
y Segundo uso
<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" />
Utilice siempre AppCompatImageView o Button porque Vector Image no es compatible con Simple ImageView
si todos los métodos anteriores no funcionan, use
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
Si está utilizando Activity, amplíe su actividad con AppCompatActivty
public final class MainActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
necesitas agregar
xmlns: app = "http://schemas.android.com/apk/res-auto"
a su diseño para que funcione. Mi "aplicación: srcCompat" se resaltó en rojo hasta que lo agregué.
app:srcCompat
llamada app:srcCompat
lugar de android:srcCompat
.
No lo hagas
android:srcCompat="@drawable/your_image"
HACER
app:srcCompat="@drawable/your_image"
Finalmente
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/wallpaper"/>
Mi versión gradle es 1.5
Actualiza tu versión de Gradle .
Solución
Gradle Plugin 2.0+
com.android.tools.build:gradle:2.0.0-beta2
Los vectores arrastrables le permiten reemplazar múltiples activos png con un solo gráfico vectorial, definido en XML. Aunque anteriormente se limitaba a Lollipop y dispositivos superiores, tanto VectorDrawable como AnimatedVectorDrawable ahora están disponibles a través de dos nuevas bibliotecas de soporte: support-vector-drawable y support-animated-vector-drawable.
Agrega esto
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
Notará que este nuevo atributo solo existe en la versión 2.0 del Plugin de Gradle. Si está utilizando Gradle 1.5, en su lugar utilizará
// Gradle Plugin 1.5
android {
defaultConfig {
generatedDensities = []
}
// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Ir a través de here
No lo hagas
android:srcCompat="@drawable/wallpaper"
Hacer
app:srcCompat="@drawable/wallpaper"
ya que el atributo srcCompat se define realmente dentro de la biblioteca de AppCompat .
Importante , deberá agregar el espacio de nombre apropiado para esto.
xmlns: app = "http://schemas.android.com/apk/res-auto"
Importante
lo que está obteniendo parece que es solo un error de pelusa que puede ser ignorado. Lo intenté y tengo el mismo error, pero está funcionando correctamente.
puede usar tools:ignore="MissingPrefix"
para evitar ver este error temporalmente.