ImageView android:cropToPadding,它究竟做了什么?
ImageView android:cropToPadding, what it actually does?
我查看了标签 android:cropToPadding
here 的文档,它只说:
If true, the image will be cropped to fit within its padding.
May be a boolean value, such as "true" or "false".
这让我很难理解。
我的应用程序中有一个 ImageView
(由其他人开发):
<ImageView
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_gravity="center"
android:maxWidth="100dp"
android:padding="20dp" />
这个 ImageView
里面有 cropToPadding
标签,主屏幕上有 20 个 ImageView
,里面都有这个标签,应用程序显然需要时间来因为有更多图像而加载,但是删除图像不是一个选项,所以当我遇到这个标签时,我正在寻找无用的东西并尝试优化布局。
删除此标签 显示在 ImageView
内的图片,但每张图片都包含此标签肯定有某种原因。所以我开始寻找这个标签的作用,而文档并不清楚为什么要使用这个标签。
谁能解释一下这个标签对图像的作用?我找的资源不多,全是"This crops the Image to padding",什么意思!我知道填充是什么,我知道裁剪是什么,但是 "Sets whether this ImageView will crop to padding" 是什么意思?
这是一个需要回答的复杂问题,因为我们必须深入研究 ImageView 如何实际将图像绘制到屏幕的一些 nitty-gritty 细节。
首先要确定的是,有两个矩形会影响ImageView 的绘制行为。第一个是由 ImageView 的尺寸 忽略 填充定义的矩形。第二个是由 ImageView 的尺寸 考虑 填充定义的矩形。 (显然,如果 padding 为 0,那么这些将是相同的。)
接下来要确定的是 ImageView 都有一个 scale 类型 定义当图像的固有尺寸不匹配时如何拉伸 and/or 裁剪图像它被绘制到的矩形的大小。
默认缩放类型是 FIT_CENTER
,它会缩小图像以适应视图边界 + 填充(也就是说,图像将在考虑填充的矩形内绘制)。由于图像是在 内部 填充矩形内绘制的,因此 android:cropToPadding
无效。
但是,其他比例类型的工作方式不同。 scale 类型 CENTER
简单地将图像定位在视图的中间,但不执行缩放(因此如果图像比视图大,将被裁剪)。在这种情况下,android:cropToPadding
定义图像是只被视图的边界裁剪还是被视图的填充裁剪。
一图胜千言:
此图片显示了 72x72 视图中的同一张 72x72 图像 ,填充为 16dp 和 CENTER
比例类型。左边的ImageView有android:cropToPadding="false"
,右边的ImageView有android:cropToPadding="true"
.
我查看了标签 android:cropToPadding
here 的文档,它只说:
If true, the image will be cropped to fit within its padding.
May be a boolean value, such as "true" or "false".
这让我很难理解。
我的应用程序中有一个 ImageView
(由其他人开发):
<ImageView
android:layout_width="125dp"
android:layout_height="125dp"
android:layout_gravity="center"
android:maxWidth="100dp"
android:padding="20dp" />
这个 ImageView
里面有 cropToPadding
标签,主屏幕上有 20 个 ImageView
,里面都有这个标签,应用程序显然需要时间来因为有更多图像而加载,但是删除图像不是一个选项,所以当我遇到这个标签时,我正在寻找无用的东西并尝试优化布局。
删除此标签 显示在 ImageView
内的图片,但每张图片都包含此标签肯定有某种原因。所以我开始寻找这个标签的作用,而文档并不清楚为什么要使用这个标签。
谁能解释一下这个标签对图像的作用?我找的资源不多,全是"This crops the Image to padding",什么意思!我知道填充是什么,我知道裁剪是什么,但是 "Sets whether this ImageView will crop to padding" 是什么意思?
这是一个需要回答的复杂问题,因为我们必须深入研究 ImageView 如何实际将图像绘制到屏幕的一些 nitty-gritty 细节。
首先要确定的是,有两个矩形会影响ImageView 的绘制行为。第一个是由 ImageView 的尺寸 忽略 填充定义的矩形。第二个是由 ImageView 的尺寸 考虑 填充定义的矩形。 (显然,如果 padding 为 0,那么这些将是相同的。)
接下来要确定的是 ImageView 都有一个 scale 类型 定义当图像的固有尺寸不匹配时如何拉伸 and/or 裁剪图像它被绘制到的矩形的大小。
默认缩放类型是 FIT_CENTER
,它会缩小图像以适应视图边界 + 填充(也就是说,图像将在考虑填充的矩形内绘制)。由于图像是在 内部 填充矩形内绘制的,因此 android:cropToPadding
无效。
但是,其他比例类型的工作方式不同。 scale 类型 CENTER
简单地将图像定位在视图的中间,但不执行缩放(因此如果图像比视图大,将被裁剪)。在这种情况下,android:cropToPadding
定义图像是只被视图的边界裁剪还是被视图的填充裁剪。
一图胜千言:
此图片显示了 72x72 视图中的同一张 72x72 图像 ,填充为 16dp 和 CENTER
比例类型。左边的ImageView有android:cropToPadding="false"
,右边的ImageView有android:cropToPadding="true"
.