在android中裁剪图像以适应宽度和截断高度

Posted

技术标签:

【中文标题】在android中裁剪图像以适应宽度和截断高度【英文标题】:Cropping an image in android to fit width and cut off height 【发布时间】:2015-03-16 09:15:19 【问题描述】:

我有一个 ImageView,它的最大高度必须为 150dp,宽度必须与父级匹配。但是,我需要的是裁剪实际图像,因此图片与 ImageView 一样宽,但居中和裁剪,因此图片的顶部和底部不可见(有点像预览)。我目前拥有的:

<ImageView
    android:adjustViewBounds="true"

    android:background="#fafafa"

    android:layout_marginRight="@dimen/activity_horizontal_margin"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"

    android:layout_
    android:layout_
    android:maxHeight="150dp"
    android:id="@+id/articlepreviewimage"
    android:src="@mipmap/ic_launcher"
    android:layout_below="@+id/naslovclanka"
    android:layout_centerHorizontal="true"
    />

此外,图像保持其原始比例至关重要,因此不要将其作为背景,也不要缩放等。我只需要它来填充 ImageView 的宽度并在该 ImageView 中显示图片的中心.

目前的做法是缩放图像,使其适合高度或宽度,但不会切掉任何东西。如何做到这一点?

【问题讨论】:

哇哦!!! @Orlando Bloom 在 *** 上... 【参考方案1】:

看看android:scaleType="centerCrop" 还有很多其他比例类型可能适合您的需求。

【讨论】:

他是对的,一件事 - 你需要设置 imageview 的确切高度。另一种无需缩放的方法是扩展 ImageView 类并覆盖 onMeasure 方法【参考方案2】:

尝试执行以下操作:

<ImageView
    android:id="@+id/yourimageId"
    android:layout_
    android:layout_
    android:layout_margin="2dp"
    android:adjustViewBounds="true"
    android:layout_gravity="center_vertical"
    android:clickable="true"
    android:scaleType="fitXY"
    android:layout_marginRight="20dp"
    android:layout_marginLeft="20dp"
    android:maxHeight="150dp"/>

【讨论】:

以上是关于在android中裁剪图像以适应宽度和截断高度的主要内容,如果未能解决你的问题,请参考以下文章

缩放图像以适应可用空间,同时防止裁剪

Android ImageView 将较小的图像缩放到具有灵活高度的宽度,而不会裁剪或扭曲

如何裁剪引导图像以获得所有图像的宽度 285 和高度 170?

PHP裁剪图像以固定宽度和高度而不丢失尺寸比

JCrop 得到裁剪的宽度和高度

如何通过中心裁剪和适合宽度/高度来适应动态壁纸中的视频?