ImageView android:cropToPadding,它的实际作用是什么?

时间:2019-06-12 18:14:36

标签: android android-layout imageview android-imageview

我浏览了标签android:cropToPadding here的文档,它只显示:

  

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

     

可能是布尔值,例如“ true”或“ 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内显示的图像进行不变,但是必须出于某些原因,每个图像都包含此标签。因此,我开始寻找此标签的作用,而对于为什么应使用此标签的文档也不清楚。

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

1 个答案:

答案 0 :(得分:1)

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

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

接下来要建立的是ImageViews都具有一个 scale类型,该类型定义了当图像的固有尺寸与矩形的尺寸不匹配时如何拉伸和/或裁剪图像。正在被吸引。

默认缩放比例类型为FIT_CENTER,它将图像缩小以适合视图范围+填充(即,图像将绘制在考虑填充的矩形内)。由于图像是在填充矩形的内部中绘制的,因此android:cropToPadding无效。

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

一张图片值一千字:

enter image description here

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