我有一个以下列方式定义的ImageView:
<ImageView
android:id="@+id/cover_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_above="@id/divider"
android:adjustViewBounds="true"
android:src="@drawable/image_placeholder"
android:scaleType="fitStart"/>
现在下载新的位图后,我改变了drawable。图像现在出现在ImageView的左上角。有没有办法让图像填满可能的整个高度,然后调整视图的宽度以启用缩放图像而不改变ascpect比率?
图像填满标准屏幕上的所有空间,但在WVGA分辨率下,图像仅占ImageView实际高度的一半左右。
答案 0 :(得分:44)
如果我正确理解你,你需要使用的是centerCrop
scaleType。 fitStart
按比例缩放图像,但宽度和高度都不会超过视图的大小,正如您所说,图像将具有top|left
重力。
使用centerCrop
按比例缩放图像,但会使图像的最短边缘与视图的大小相匹配,如果长边上有其他数据不适合,则会简单地裁剪掉。当然,引力是center
。以下对我有用:
<ImageView
android:src="@drawable/image_placeholder"
android:id="@+id/cover_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
/>
答案 1 :(得分:10)
您可以通过调用
将比例类型更改为fitXYimageView.setScaleType(ScaleType.FIT_XY);
答案 2 :(得分:4)
只需在xml中执行此操作,如
android:scaleType="fitXY"
答案 3 :(得分:1)
基本上,这里的答案是没有为您要实现的目标预定义的值。解决方案是创建符合您需求的Matrix
,并在ImageView
上致电setImageMatrix(matrix)
。