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

Ved*_*agh 5 android imageview android-layout android-imageview

我在android:cropToPadding 这里浏览了标签的文档,它只说:

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

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

这让我很难理解。

我的ImageView应用程序内部有一个(由其他人开发):

<ImageView
      android:layout_width="125dp"
      android:layout_height="125dp"
      android:layout_gravity="center"
      android:maxWidth="100dp"
      android:padding="20dp" />
Run Code Online (Sandbox Code Playgroud)

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

删除此标签不会改变中显示的图像ImageView,但每个图像都包含此标签肯定有某种原因。所以我开始寻找这个标签的作用,文档并不清楚为什么应该使用这个标签。

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

Ben*_* P. 11

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

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

接下来要确定的是,ImageViews 都有一个比例类型,它定义了当图像的固有大小与它被绘制到的矩形的大小不匹配时如何拉伸和/或裁剪图像。

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

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

一张图片胜过千言万语:

在此处输入图片说明

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