代码之家  ›  专栏  ›  技术社区  ›  Janusz Daniel Rindt

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

  •  23
  • Janusz Daniel Rindt  · 技术社区  · 14 年前

    我有一个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"/>
    

    现在下载了一个新的位图后,我改变了绘图。图像现在显示在ImageView的左上角。有没有一种方法可以让图像填充整个高度,然后调整视图的宽度,以便在不更改光谱比的情况下缩放图像?

    图像填满了标准屏幕上的所有空间,但在WVGA分辨率下,图像仅占图像视图实际高度的一半左右。

    4 回复  |  直到 14 年前
        1
  •  1
  •   mreichelt    14 年前

    基本上,这里的答案是,对于您想要实现的目标没有预定义的值。解决方案是创建 Matrix 符合你的需要 setImageMatrix(matrix) 关于你的 ImageView .

        2
  •  47
  •   Juuso Ohtonen    12 年前

    如果我对你的理解正确,你需要使用的是 centerCrop 鳞片。 fitStart 按比例缩放图像,但宽度和高度都不会超过视图的大小,并且图像将具有 top|left 地心引力。

    使用 中心裁剪 按比例缩放图像,但会导致图像的最短边与视图的大小匹配,如果长边上有不适合的其他数据,则只会将其裁剪掉。当然,重力是, 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"
    />
    
        3
  •  10
  •   Nikolay Ivanov    14 年前

    您可以通过调用

    imageView.setScaleType(ScaleType.FIT_XY);
    
        4
  •  5
  •   Atendra Singh    9 年前

    只需像xml一样

    android:scaleType="fitXY"