【问题标题】:ImageView android:cropToPadding, what it actually does?ImageView android:cropToPadding,它实际上是做什么的?
【发布时间】:2019-10-27 07:38:16
【问题描述】:

我浏览了标签android:cropToPaddinghere的文档,它只说:

如果为 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 是否裁剪为填充”是什么意思?

【问题讨论】:

    标签: android android-layout imageview android-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"

    【讨论】:

    • 这是否意味着除了CENTERcropToPadding 之外的每个scaleType 都没有效果?所有其他比例类型都提到“缩放图像”,所以我不得不假设......
    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2011-03-11
    • 2010-11-26
    • 2015-06-23
    • 2017-12-26
    • 2016-10-19
    相关资源
    最近更新 更多