Hola usuario de nuestra página, encontramos la solución a lo que necesitas, has scroll y la encontrarás a continuación.
Solución:
No se puede utilizar Dibujables vectoriales en cualquier otra vista excepto ImageView
en pre piruleta.
Por favor, vea esta SO Respuesta del defensor de desarrolladores de Google.
Para los usuarios de AppCompat, hemos decidido eliminar la funcionalidad que les permite usar elementos de diseño vectoriales de recursos en dispositivos anteriores a Lollipop debido a problemas encontrados en la implementación en la versión 23.2.0/23.2.1 [ https://code.google.com/p/android/issues/detail?id=205236, https://code.google.com/p/android/issues/detail?id=204708 ]. Usando
app:srcCompat
ysetImageResource()
continúa trabajando.
Si desea utilizar el Dibujables vectoriales pre-lollipop, el uso puede configurarlo programáticamente convirtiéndolo en un dibujable.
Drawable drawable;
if (android.os.Build.VERSION.SDK_INT > Build.VERSION_CODES.M)
drawable = context.getResources().getDrawable(drawableResId, context.getTheme());
else
drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, context.getTheme());
button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
Estaba en uno de los proyectos de práctica tratando de aprender tareas y servicios en segundo plano en Android. Cuando saqué su código de muestra, inicialmente no se estaba compilando debido a este error. Así que agregué la siguiente etiqueta en el archivo build.gradle de la aplicación para eliminar el problema de compilación:
android
defaultConfig
vectorDrawables.useSupportLibrary = true
Ahora, en el momento en que agregué esta configuración, mi aplicación también comenzó a fallar en Microsoft Android Simulator exactamente como lo describió OP.
Dado que mi enfoque actual era aprender sobre las tareas en segundo plano, quería comenzar a depurar mi aplicación. Entonces, eliminé la configuración anterior nuevamente. Además de eso, también eliminé un attribute nombrada android:fillColor
en path
etiqueta de uno de mis recursos dibujables (o también puede reemplazar el valor @color/colorAccent
con un código hexadecimal como #FF000000
). Después de eliminarlo (o cambiarlo con código hexadecimal), mi error de compilación inicial no apareció:
Después de la eliminación se ve como:
Mi emulador de MS Android tenía Kitkat (4.4). Mi código fallaba porque mi aplicación intentaba usar elementos de diseño vectorial en una versión anterior a la piruleta de Android, como se menciona en la respuesta aceptada de Vipul.
Para usar VectorDrawableCompat, debe configurar:
android.defaultConfig.vectorDrawables.useSupportLibrary = true
Para usar VectorDrawableCompat, debe realizar dos modificaciones en su proyecto. Primero, configure android.defaultConfig.vectorDrawables.useSupportLibrary = true en su archivo build.gradle, y segundo, use app:srcCompat en lugar de android:src para referirse a elementos de diseño vectoriales.
-
Ir a tu
build.gradle
(Módulo: aplicación) y agregue la siguiente línea al bloque de Android. Debería verse así.android compileSdkVersion 27 defaultConfig applicationId "..." minSdkVersion 15 targetSdkVersion 27 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true // <------ buildTypes release minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
-
Referirse a la fuente como srcCompat para permitir que su aplicación utilice gráficos vectoriales.
app:srcCompat="@dibujable/avión"