Как установить VectorDrawable как изображение для ImageView программно

Я хочу установить vectorDrawables в ImageView в Android Studio.

Я могу легко установить png и jpg, но когда я хочу установить VectorDrawable, он не работает в режиме просмотра изображений.

img.setImageResource(R.drawable.ic_home);

ic_home - VectorDrawable, и этот код не работает.

Ответ 1

Если вы хотите использовать векторные чертежи (меньше ИЛИ больше, чем API 21), просто выполните следующие действия:

Установить изображение программно (например, в вашей деятельности):

imageView.setImageResource(R.drawable.ic_left_arrow_blue); 

или XML:

app:srcCompat="@drawable/your_vector_name"

В вашем приложении build.gradle вам необходимо включить:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

И для поддержки вектора менее API 21 добавьте следующее в onCreate:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);  

Ответ 2

Для тех, кто хочет загрузить вектор, который можно программно использовать для других целей, например, для установки drawableLeft или иначе, вы можете использовать:

Drawable drawable = AppCompatResources.getDrawable(context, drawableRes);

где контекст - AppCompatActivity.

Ответ 3

Согласно официальному блогу разработчика Android, нет никаких изменений для метода setImageResource() во время выполнения для vectorDrawables.

Если вы изменяете drawables во время выполнения, вы сможете использовать тот же метод setImageResource(), что и раньше - никаких изменений там нет. Использование AppCompat и app: srcCompat - самый надежный метод интеграции векторных рисунков в ваше приложение.

Для более подробной информации, ознакомьтесь с этой прекрасной статьей AppCompat - Возраст векторов от Google Developer.

Ответ 4

если вас беспокоит обратная совместимость, вам следует использовать AppCompatImageView вместо просмотра изображений. пройдите приведенный ниже код.

<android.support.v7.widget.AppCompatImageView
    android:id="@+id/iv_about"
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
   app:srcCompat="@drawable/ic_vector_image"
    />

ява

AppCompatImageView image = (AppCompatImageView) findViewById(R.id.iv_about);
image.setImageResource(R.drawable.ic_vector_image);

код ниже необходимо добавить в build.gradle

android {defaultConfig {vectorDrawables.useSupportLibrary = true}}

И это послужит перспективе приложения: srcCompat.

Ответ 5

для использования Java-кода:

formate_img.setImageResource(R.drawable.ic_text);//ic_text is a Vector Image

и для использования в XML:

<android.support.v7.widget.AppCompatImageView
        android:id="@+id/search_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_weight="1"
        ads:srcCompat="@drawable/ic_barcode" //for Vector Image
        tools:ignore="VectorDrawableCompat" />

Ответ 6

У меня был вектор в представлении переработчика, я использовал img.setImageResource(R.drawable.ic_home) который не работал должным образом, как какое-то другое изображение, формируемое в некотором элементе представления переработчика. Затем я использовал img.setImageDrawable(activity.getResources().getDrawable(R.drawable.ic_home)) это сработало.

Ответ 7

Использовать этот:

android.support.v7.widget.AppCompatImageButton, 
android.support.v7.widget.AppCompatImageView,
android.support.v7.widget.AppCompatTextView 

вместо ImageButton, ImageView и т.д.

Если используется изображение векторного типа. В основном для пользовательских видов.

Ответ 8

Удалите две папки из вашей папки для рисования, затем перестройте ваш проект, он будет работать правильно enter image description here