ImageView android:cropToPadding,它实际上是做啥的?
Posted
技术标签:
【中文标题】ImageView android:cropToPadding,它实际上是做啥的?【英文标题】:ImageView android:cropToPadding, what it actually does?ImageView android:cropToPadding,它实际上是做什么的? 【发布时间】:2019-10-27 07:38:16 【问题描述】:我浏览了标签android:cropToPadding
here的文档,它只说:
如果为 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"
。
【讨论】:
这是否意味着除了CENTER
,cropToPadding
之外的每个scaleType 都没有效果?所有其他比例类型都提到“缩放图像”,所以我不得不假设......以上是关于ImageView android:cropToPadding,它实际上是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章
android 自定义控件(带有删除按钮的imageview) 怎么在ImageView背景上添加button按钮 动态添加imageview 自带删除图标的imageview list删除某
如何将imageview内的图像移动到imageView的上端?
以另一个 ImageView 的形状裁剪 ImageView
[??????]????????????????????????????????????,????????????ImageView???