需求:一个尺寸原比例完整显示
- 在 ImageView 的使用过程中,我需要 指定一个参数 如
layout_width
,而另一个参数设置为 wrap_content
; - 我希望图片保持 原比例 显示在控件上;
- 我希望图片 完整显示 在控件上,如果图片小于控件那么就按比例放大,如果图片小与控件那就按比例缩小
代码实现
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher" />
注释
android:adjustViewBounds="true"
即:调整 ImageView 的尺寸来保持图像纵横比不变。
- 使用这个参数,必须有一个边界是固定的,如果 ImageView 的宽高都是
wrap_content
那么这句设置是无效的; - 并不意味着,ImageView 的宽高比一定等于图片的宽高比。这是因为,当仅使用该句时,如果图片的宽小于 ImageView 中指定的宽时那么 ImageView 的高就是图片的高,而宽并不填充;如果图片的宽 大于等于 ImageView 指定的宽时,此时 ImageView 的高将会根据图片比例设置;
android:scaleType="centerCrop"
即:控件中心和原始图片中心重叠,图片等比例缩放;以原图填满 控件 为目的;原图不见得一定会完全显示;
- 如果原图比例 > 控件比例,则按照控件高 / 图片高进行等比例缩放,保证图片宽度在进行同等比例缩放的时候,图片宽度大于或等于控件的宽度;
- 如果原图比例 < 控件比例,则按照控件宽/图片宽进行等比例缩放,保证图片高度在进行同等比例缩放的时候,图片高度大于或等于控件的高度。
android:scaleType="centerInside"
即:以原图正常显示为目的,
- 如果原图size 大于 ImageView 的 size,就按照比例缩小原图的宽高,居中显示在ImageView中。
- 如果原图 size 小于 ImageView 的 size,则不做处理居中显示图片。
- 注意:这个看似完美的属性,其实不符合我们的要求,因为我这里只有一个参数固定,如果使用这句,那么控件的高,将会按照图片比例进行缩放空间大小;这就出现如下情况,对于小图我希望像图一所示,但实际上,结果是图二;


android:src="@drawable/ic_launcher"
src 存放的是原图的大小,不会进行拉伸;background会根据 ImageView 组件给定的长宽进行拉伸。src 是设置图标,而background只是设置背景。- 如果事先大概知道图片比空间尺寸大,那么可以使用本方法;