ImageView android:cropToPadding,它实际上是做啥的?

Posted

技术标签:

【中文标题】ImageView android:cropToPadding,它实际上是做啥的?【英文标题】:ImageView android:cropToPadding, what it actually does?ImageView android:cropToPadding,它实际上是做什么的? 【发布时间】:2019-10-27 07:38:16 【问题描述】:

我浏览了标签android:cropToPaddinghere的文档,它只说:

如果为 true,图像将被裁剪以适应其填充。

可以是布尔值,例如“true”或“false”。

这让我很难理解。

我的应用中有一个ImageView(由其他人开发):

<ImageView
      android:layout_
      android:layout_
      android:layout_gravity="center"
      android:maxWidth="100dp"
      android:padding="20dp" />

这个ImageView里面有cropToPadding标签,主屏幕上有大约20个ImageView,里面都有这个标签,而且应用程序显然需要时间来加载,因为有更多的图像,但是然后删除图像不是一种选择,所以当我遇到这个标签时,我发现了一些无用的东西并试图优化布局。

删除此标记对ImageView 中显示的图像没有改变,但每个图像都包含此标记一定是有原因的。所以我开始寻找这个标签的作用,文档并不清楚为什么要使用这个标签。

谁能解释一下这个标签对图片​​的作用?我发现资源不多,我发现的只是“这将图像裁剪为填充”,这是什么意思!我知道什么是填充,我知道什么是裁剪,但是“设置此 ImageView 是否裁剪为填充”是什么意思?

【问题讨论】:

【参考方案1】:

这是一个需要回答的复杂问题,因为我们必须深入了解 ImageView 如何将图像实际绘制到屏幕上的一些细节。

首先要确定的是,有两个矩形会影响 ImageView 的绘制行为。第一个是由 ImageView 的尺寸忽略填充定义的矩形。第二个是由 ImageView 的尺寸考虑填充定义的矩形。 (显然,如果 padding 为 0,那么这些将是相同的。)

接下来要确定的是,ImageViews 都有一个 scale 类型,它定义了当图像的固有大小与其矩形大小不匹配时如何拉伸和/或裁剪图像正在被拉进去。

默认的缩放类型是FIT_CENTER,它将图像缩小以适应视图边界+填充(即,图像将绘制在考虑填充的矩形内)。由于图像是在 内部 填充矩形绘制的,android:cropToPadding 无效。

但是,其他比例类型的工作方式不同。缩放类型CENTER 只是将图像定位在视图的中间,但不执行缩放(因此如果图像大于视图,则图像将被剪裁)。在这种情况下,android:cropToPadding 定义图像是仅被视图的边界裁剪,还是也被视图的填充裁剪。

一张图抵千言:

这张图片在 72x72 视图中显示了相同的 72x72 图像具有 16dp 填充CENTER 比例类型。左边的 ImageView 有android:cropToPadding="false",右边的 ImageView 有android:cropToPadding="true"

【讨论】:

这是否意味着除了CENTERcropToPadding 之外的每个scaleType 都没有效果?所有其他比例类型都提到“缩放图像”,所以我不得不假设......

以上是关于ImageView android:cropToPadding,它实际上是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章

android 自定义控件(带有删除按钮的imageview) 怎么在ImageView背景上添加button按钮 动态添加imageview 自带删除图标的imageview list删除某

如何动态的设定imageview的大小

如何将imageview内的图像移动到imageView的上端?

Android 怎么把imageview 转为Bitmap

以另一个 ImageView 的形状裁剪 ImageView

[??????]????????????????????????????????????,????????????ImageView???