ImageView设置图像

时间:2014-09-04 02:13:45

标签: android android-layout imageview

我使用两种方法为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" />

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

1 个答案:

答案 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