/ / ImageView set image - android, layout di Android, imageview

ImageView set image - android, layout di Android, imageview

Uso due modi per impostare l'immagine per imageView, per xml e per codice setBackgroundResource

per esempio. img.setBackgroundResource(R.drawable.task_learn_lock);

O xml

<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_weight="1"
android:src="/images/@drawable/task_learn_lock"
android:contentDescription="@string/desc"
android:scaleType="centerInside" />

Ma il risultato è diverso, l'immagine creata dail codice è allungato verticalmente. Qualcuno sa perché? Devo impostare una nuova immagine quando l'app è in esecuzione. Ho provato a pubblicare una schermata, ma non ho abbastanza reputazione per farlo. Grazie.

risposte:

1 per risposta № 1

Molto probabilmente è perché l'impostazione predefinita soddisfare (definito da xml) del imageView"s sono diversi per questi due approcci.

Nel tuo secondo metodo che imposta l'immagine di sfondo a livello di codice, suppongo che dovresti impostare un valore predefinito drawable immagine che è diversa da @drawable/task_learn_lock in taglia e proporzioni.

Dal momento che il layout_height e layout_width del tuo ImageView sono definiti come wrap_content, le proporzioni del tuo ImageView sarà lo stesso del tuo predefinito src Immagine. Quindi quando imposti l'immagine di sfondo img.setBackgroundResource(R.drawable.task_learn_lock), l'immagine sarà allungata per adattarsi alla corrente ImageViewla dimensione di s.

Nel tuo caso, sembra che tu voglia impostare il contenuto @drawable/task_learn_lock ma non lo sfondo del tuo ImageView, dovresti usare setImageResource invece di setBackgroundResource.