我使用两种方法为imageView设置图像,xml和代码setBackgroundResource
例如。 img.setBackgroundResource(R.drawable.task_learn_lock);
OR 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="@drawable/task_learn_lock"
android:contentDescription="@string/desc"
android:scaleType="centerInside" />
但结果不同,代码创建的图像垂直拉伸。谁知道为什么?我需要在应用程序运行时设置新图像。我试图发布一个屏幕截图,但我没有足够的声誉这样做。感谢。
答案 0 :(得分:1)
很可能是因为这两种方法的imageView
的默认内容(由xml定义)不同。
在第二种以编程方式设置背景图片的方法中,我猜你应该设置一个默认的drawable
图片,该图片与尺寸和中的@drawable/task_learn_lock
不同宽高比。
由于layout_height
的{{1}}和layout_width
被定义为ImageView
,因此wrap_content
的宽高比将与您的默认{相同{1}}图片因此,当您按ImageView
设置背景图片时,图片将被拉伸以适合当前src
的尺寸。
在您的情况下,您希望将内容设置为img.setBackgroundResource(R.drawable.task_learn_lock)
而不是ImageView的背景,您应该使用ImageView
代替@drawable/task_learn_lock
。