我浏览了标签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是否裁剪为填充”是什么意思?
答案 0 :(得分:1)
这是一个要回答的复杂问题,因为我们必须深入了解ImageView如何将图像绘制到屏幕上的一些细节。
首先要确定的是,有两个矩形会影响ImageView的绘制行为。第一个是由ImageView的尺寸忽略填充定义的矩形。第二个是由ImageView的尺寸考虑填充定义的矩形。 (显然,如果padding为0,那么它们将是相同的。)
接下来要建立的是ImageViews都具有一个 scale类型,该类型定义了当图像的固有尺寸与矩形的尺寸不匹配时如何拉伸和/或裁剪图像。正在被吸引。
默认缩放比例类型为FIT_CENTER
,它将图像缩小以适合视图范围+填充(即,图像将绘制在考虑填充的矩形内)。由于图像是在填充矩形的内部中绘制的,因此android:cropToPadding
无效。
但是,其他秤类型的工作方式却有所不同。比例类型CENTER
只是将图像放置在视图的中间,但不执行缩放(因此,如果图像大于视图,则图像将被裁剪)。在这种情况下,android:cropToPadding
定义是仅通过视图的边界裁剪图像还是通过视图的填充裁剪图像。
一张图片值一千字:
此图片在72x72视图中使用16dp填充和CENTER
比例类型显示了相同的72x72图像。左侧的ImageView具有android:cropToPadding="false"
,右侧的ImageView具有android:cropToPadding="true"
。