Android 图像视图集图像

Android 图像视图集图像,android,android-layout,imageview,Android,Android Layout,Imageview,我使用两种方法为imageView设置图像,即通过xml和通过代码setBackgroundResource 例如,img.setBackgroundResource(R.drawable.task\u learn\u lock) 或xml <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_conte

我使用两种方法为imageView设置图像,即通过xml和通过代码
setBackgroundResource

例如,
img.setBackgroundResource(R.drawable.task\u learn\u lock)

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


但结果不同,代码创建的图像是垂直拉伸的。有人知道为什么吗?我需要在应用程序运行时设置新映像。我试图发布一个屏幕截图,但我没有足够的声誉这样做。谢谢。

很可能是因为这两种方法的
图像视图的默认内容(由xml定义)不同

在以编程方式设置背景图像的第二种方法中,我想您应该设置默认的
drawable
图像,该图像在大小和纵横比方面与
@drawable/task\u learn\u lock
不同

由于
ImageView
layout\u高度
layout\u宽度
定义为
wrap\u内容
,因此
ImageView
的纵横比将与默认的
src
图像相同。因此,当您通过
img.setBackgroundResource(R.drawable.task\u learn\u lock)
设置背景图像时,图像将被拉伸以适合当前
ImageView
的尺寸


如果您想将内容设置为
@drawable/task\u learn\u lock
,而不是图像视图的背景,您应该使用
setImageResource
而不是
setBackgroundResource

我尝试用预设的src并排添加两幅图像,可以很好地显示,但它使用代码添加图像,图像的显示方式会有所不同。您好,您是否建议我调整imageView的宽度和高度大小?这确实取决于您的情况,但通常这不是一个好的做法。一个快速修复方法是使用与
R.drawable.task\u learn\u lock
@kggoh顺便说一句,在您的情况下,您似乎希望将内容(
src
)设置为
@drawable/task\u learn\u lock
,而不是
图像视图的背景,您应该使用
setImageResource
而不是
setBackgroundResource
Yes。你是对的。现在它的工作,甚至我把包装内容的大小。谢谢