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 № 1Molto 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 ImageView
la 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
.