Domanda Come impostare VectorDrawable come immagine per ImageView a livello di codice


Voglio metterne un po ' vectorDrawables a a ImageView in Android Studio.

Posso impostare facilmente png e jpg drawable ma quando voglio impostare VectorDrawable, non funziona su imageview.

img.setImageResource(R.drawable.ic_home);

ic_home è VectorDrawable e questo codice non funziona.


17
2017-12-12 09:48


origine


risposte:


Se si desidera utilizzare i drawable vettoriali (meno O maggiori dell'API 21), attenersi alla seguente procedura:

Imposta l'immagine a livello di codice (ad es. Nella tua attività):

imageView.setImageResource(R.drawable.ic_left_arrow_blue); 

o tramite XML:

app:srcCompat="@drawable/your_vector_name"

Nella tua app build.gradle è necessario includere:

android {
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
}

E per il supporto vettoriale a meno dell'API 21, aggiungi quanto segue a onCreate:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);  

40
2018-04-20 10:25



Come da ufficiale blog degli sviluppatori Android, nessuna modifica per il metodo setImageResource () in fase di esecuzione per vectorDrawables.

Se stai modificando i drawable in fase di esecuzione, sarai in grado di utilizzare   stesso    setImageResource ()   metodo come prima - nessuna modifica lì. Utilizzo di AppCompat e dell'app: srcCompat   è il metodo più infallibile per integrare i drawable del vettore nel tuo   app.

Per maggiori dettagli, guarda questo simpatico articolo AppCompat - L'età dei vettori dallo sviluppatore di Google.


17
2017-12-12 10:08



se si è interessati alla retrocompatibilità, si dovrebbe usare AppCompatImageView invece visualizza immagine. passare attraverso il codice qui sotto.

<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"
    />

Giava

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

E servirà la prospettiva di app:srcCompat.


8
2017-12-12 10:22



Per coloro che desiderano caricare un vettore disegnabile a livello di codice per altri usi, come l'impostazione di Drawable Draw o di altro, è possibile utilizzare:

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

dove il contesto è AppCompatActivity.


5
2018-03-13 19:57



Avevo un vettore in vista riciclatore che stavo usando img.setImageResource (R.drawable.ic_home) che non ha funzionato correttamente come se qualche altra immagine si formasse in qualche oggetto di vista riciclatore, quindi l'ho usato img.setImageDrawable (activity.getResources (). getDrawable (R.drawable.ic_home)) questo ha funzionato.


2
2017-12-20 02:17



per l'uso del codice Java:

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

e per l'uso 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" />

2
2018-04-06 10:53



Usa questo:

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

invece di ImageButton, ImageView eccetera.

Se viene utilizzata l'immagine del tipo vettoriale. Principalmente per visualizzazioni personalizzate.


1
2017-12-25 10:34