support library last android android-support-library

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 } } }

Documentos: https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.VectorDrawablesOptions.html#com.android.build.gradle.internal.dsl.VectorDrawablesOptions:useSupportLibrary

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); } }

Documentos: https://developer.android.com/reference/android/support/v7/app/AppCompatDelegate.html#setCompatVectorFromResourcesEnabled(boolean)


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:

  1. Ponga soporte de dibujo vectorial en su módulo (build.gradle)

    defaultConfig { vectorDrawables.useSupportLibrary = true }

  2. En lugar de android:src="@drawable/icon" use la app:srcCompat="@drawable/icon"

  3. Asegúrese de que su Activity extends AppCompatActivity sin este paso no es posible mostrar imágenes vectoriales con la app: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"