android - poner - porque no se guardan los hashtags en instagram
Vector de etiqueta dibuja inválido (11)
El problema era que mi actividad no estaba extendiendo AppCompatActivity
sino que era una Activity
regular.
Esto no está especificado en ninguna documentación / ejemplo para vectores de soporte dibujables
Estoy tratando de usar vectores dibujables en dispositivos pre-piruletas. Hice todo como se indica here pero sigo teniendo este bloqueo.
build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ''com.android.tools.build:gradle:2.0.0-beta6''
}
}
apply plugin: ''com.android.application''
repositories {
maven { url ''http://maven.android-forever.com'' }
jcenter()
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.test.app"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
testCompile ''junit:junit:4.12''
compile ''com.android.support:appcompat-v7:23.2.0''
compile ''com.android.support:design:23.2.0''
compile "de.greenrobot:eventbus:2.4.0"
compile ''de.greenrobot:greendao:2.1.0''
compile "com.af:android-utility:1.0.0.9"
compile project('':volleyplus'')
compile project ('':libvlc'')
}
triangle.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/triangle_v"/>
</selector>
triangle_v.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="100dp"
android:width="100dp"
android:viewportHeight="100"
android:viewportWidth="100">
<path
android:name="triangle"
android:fillColor="#FF0000"
android:pathData="m 50,0 l 50,100 -100,0 z"/>
</vector>
layout.xml
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/triangle"/>
También probé la app:srcCompat
y en ese caso, dibujable simplemente no se muestra.
Encontré este problema en code.google.
Parece ser el mismo problema que tú. ¿Esto ayuda? https://code.google.com/p/android/issues/detail?id=201843
Enfrenté un problema similar y la propia respuesta de @ pedja es útil. De manera más general, como se menciona en el artículo de Chris Banes sobre compat draw vector , la biblioteca de soporte funciona inyectando su versión de ImageView
sobre el sistema uno en pre-L a través de algunos hooks. Esto implícitamente requiere que se utilicen las versiones de clases de AppCompatActivity
, como AppCompatActivity
.
En mi caso, el vector dibujable se usa en una vista independiente de una tostada sin una actividad asociada, usando el contexto de la Aplicación. Terminé usando AppCompatImageView
en la definición de diseño xml directamente, es decir, algo como
<android.support.v7.widget.AppCompatImageView
android:id="@+id/some_id"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/selector_referencing_vector_drawable"/>
por lo tanto, no es necesario el mecanismo mágico de "gancho". Una vez probado, esto también funciona con la clase de Activity
sin la necesidad de usar AppCompatActivity
. Todo lo anterior se realizó sin actualizar a 23.2.1, lo que solucionó un problema diferente.
Eso es todo lo que me gusta de Internet, y es trabajo para mí. Verifica cuál extrañas.
1) dentro de build.gradle
android {
...
defaultConfig {
...
vectorDrawables.useSupportLibrary = true
}
}
2) Debe usar buildToolsVersion ''27.0.3''
y compile ''com.android.support:appcompat-v7:27.0.3''
código de versión similar.
3) Utilice la versión superior a 3 gradle
classpath ''com.android.tools.build:gradle:3.0.1''
4) Para la app:srcCompat
uso de ImageView
app:srcCompat
xmlns:app="http://schemas.android.com/apk/res-auto"
app:srcCompat="@drawable/ic_logo"
5) Pero si necesitas android:drawableLeft
o android:drawableRigth
etc. entonces:
ic_logo.xml (Vector xml)
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="@dimen/home.button.icon"
android:height="@dimen/home.button.icon"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
tools:ignore="VectorRaster">
<path
android:fillColor="#FFFFFF"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
</vector>
ic_logo_select.xml (selector de vectores)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true"
android:drawable="@drawable/ic_logo" />
<item android:drawable="@drawable/ic_logo" />
</selector>
Ahora puedes usar android: drawableLeft o android: drawableRight
<android.support.v7.widget.AppCompatButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_logo_select"/>
6) Y al final, setCompatVectorFromResourcesEnabled = true dentro de estática que se carga antes del método principal.
public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
....
}
}
Este código va a funcionar con el vector si se usa
vectorDrawables.useSupportLibrary = true
Y cambie android:src
a la app:srcCompat
.
Por ejemplo,
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/triangle"/>
a
<ImageView android:layout_width="match_parent" android:layout_height="match_parent" app:srcCompat="@drawable/triangle"/>
Este es el bug de la vn.2.2 de support-v4, appcompat-v7 que aparece en la API 19. @tim proporciona un enlace a este problema de error.
Puede actualizar a la nueva biblioteca versión 23.2.1 y el error está solucionado ahora.
Las respuestas que se dan aquí ignoran una situación en la que desea agregar un dibujo a una vista de texto porque genera el mismo error. en mi caso tuve
<TextView .... android:drawableLeft="some_vectore_drawable" />
No pude encontrar la forma de resolver esto, así que eliminé esa línea del código xml y la puse en mi código java de esta manera
Drawable somevectordrable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.somevectordrawable);
mytextview.setCompoundDrawableWithIntrinsicBounds(somevectordrable, null, null, null);
Aclaración para el código,
Obtenga el vector dibujable de la carpeta de objetos dibujables usando AppCompatDrawableManager
Establecer el dibujable que acabamos de obtener como el dibujable a la izquierda en nuestra textview
Si se ve usando <android.support.v7.widget.AppCompatImageView
al cargar un vector dibujable, podría ser una mejor idea extender AppCompatActivity
lugar de Activity
y volver a usar la <ImageView...app:srcCompat="@drawable/...
regular <ImageView...app:srcCompat="@drawable/...
También necesita incluir la nueva biblioteca de soporte vectorial:
compile ''com.android.support:support-vector-drawable:23.2.0''
También tuve este problema al cargar vectores desde un selector en dispositivos pre-lollipop:
Utilice AppCompatDelegate.setCompatVectorFromResourcesEnabled (true) en su método onCreate:
Establece si los vectores arrastrables en plataformas anteriores (<API 21) se pueden usar dentro de los recursos de android.graphics.drawable.DrawableContainer. Cuando está habilitado, AppCompat puede interceptar cierta inflación extraíble del marco, que permite la inflación implícita de los vectores arrastrables dentro de los recursos de android.graphics.drawable.DrawableContainer.
protected final void onCreate(Bundle savedInstanceState) {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
super.onCreate(savedInstanceState);
...
Funciona con 23.2.0 o 23.4.0, no con 23.3.0. ¡En serio, Google!
Primero, esta funcionalidad se lanzó originalmente en 23.2.0, pero luego encontramos problemas de uso de la memoria y de actualización de la configuración, así que lo eliminamos en 23.3.0. En 23.4.0 (técnicamente una versión de corrección) hemos vuelto a agregar la misma funcionalidad pero detrás de una bandera que necesita habilitar manualmente.
Ref: https://medium.com/@chrisbanes/appcompat-v23-2-age-of-the-vectors-91cbafa87c88#.waicp19gh