如何创建填充父高度并显示尽可能大的图像的ImageView?

时间:2010-11-24 10:35:46

标签: android layout scaling imageview

我有一个以下列方式定义的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实际高度的一半左右。

4 个答案:

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

您可以通过调用

将比例类型更改为fitXY
imageView.setScaleType(ScaleType.FIT_XY);

答案 2 :(得分:4)

只需在xml中执行此操作,如

android:scaleType="fitXY"

答案 3 :(得分:1)

基本上,这里的答案是没有为您要实现的目标预定义的值。解决方案是创建符合您需求的Matrix,并在ImageView上致电setImageMatrix(matrix)