library - com.android.support:appcompat-v7 last version
Aplicación de dibujo vectorial de Android: srcCompat no muestra imágenes (7)
Estoy usando la biblioteca de soporte para mostrar imágenes vectoriales en Android Kitkat.
Cuando pruebo mi aplicación en emulater no veo ninguna de estas imágenes.
Hice un diseño separado para Android Lollipop y superior y funcionó perfectamente (creo que porque estoy usando el atributo
src
lugar de
srcCompat
Aquí está el código donde estoy usign biblioteca de soporte
<LinearLayout android:layout_alignParentBottom="true"
android:id="@+id/lake_detail"
android:background="@drawable/my_fishing_plan_footer_line"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="90dp"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_marginRight="3dp"
android:id="@+id/fire_logo"
android:layout_width="20sp"
android:layout_height="20sp">
<ImageView
android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
android:layout_width="30sp"
android:layout_height="30sp" />
<ImageView
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
android:layout_width="25dp"
android:layout_height="25dp" />
</RelativeLayout>
y es extraño porque veo las imágenes en la ventana de vista previa de Android Studio.
Respuesta original
Use
android.support.v7.widget.AppCompatImageView
lugar de
ImageView
en su diseño, de esta manera:
<LinearLayout
...
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.AppCompatImageView
android:tint="#d74313"
app:srcCompat="@drawable/circle_icon"
android:layout_width="30sp"
android:layout_height="30sp" />
<android.support.v7.widget.AppCompatImageView
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/lauzaviete"
android:layout_width="25dp"
android:layout_height="25dp" />
</LinearLayout>
Vea los documentos de
AppCompatImageView
here
y la
app:srcCompat
here
.
Además, asegúrese de hacer lo siguiente:
Configura tu
build.gradle
android {
defaultConfig {
vectorDrawables {
useSupportLibrary = true
}
}
}
Amplíe su
Activity
con
AppCompatActivity
public final class MainActivity extends AppCompatActivity {
@Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Cuando use la
app:srcCompat
, asegúrese de tener las declaraciones correctas en su diseño:
<LinearLayout
...
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
...
</LinearLayout>
Opcional (advertencia: lea los documentos):
setCompatVectorFromResourcesEnabled
en su clase de
Application
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
Además, asegúrese de que sus dibujos vectoriales se encuentren en
drawable
y no en
drawable-anydpi
.
A menudo termino con problemas si los gráficos se encuentran en la carpeta
drawable-anydpi
.
En caso de que alguien más se encuentre con este problema y esté usando androidx , intente usar androidx.appcompat.widget.AppCompatImageView
En resumen:
-
Ponga soporte de dibujo vectorial en su módulo (build.gradle)
defaultConfig { vectorDrawables.useSupportLibrary = true }
-
En lugar de
android:src="@drawable/icon"
use laapp:srcCompat="@drawable/icon"
-
Asegúrese de que su
Activity extends AppCompatActivity
sin este paso no es posible mostrar imágenes vectoriales con laapp:srcCompat
Implemente y
app:srcCompact
y luego puede usarlo en
ImageView
implementation ''com.android.support:appcompat-v7:28.0.0''
Asegúrese de implementar la versión correcta.
Luego, en su
build.gradle
establezca
android.defaultConfig.vectorDrawables.useSupportLibrary = true
defaultConfig {
//...
vectorDrawables {
useSupportLibrary true
}
}
Tuve un problema similar y después de seguir todos los pasos de la respuesta de Jared Burrows, el problema no se resolvió.
Resulta que el espacio de nombres "aplicación" dentro de mi archivo de diseño se configuró como:
xmlns:app="http://schemas.android.com/tools"
en lugar de:
xmlns:app="http://schemas.android.com/apk/res-auto"
Después de cambiar esto, se solucionó el problema
utilizar:
android:background="@drawable/circle_icon"
en lugar de:
app:srcCompat="@drawable/circle_icon"