Android 中可绘制对象的设置边界如何工作?

How setbounds of drawable works in Android?

我对 Android 中 drawable 的 setbounds 方法感到困惑。我知道它与 drawable 一起使用,它设置了 drawable 的位置和大小。简而言之,它定义了可绘制对象的边界矩形。但我很困惑:它是否设置了边框或填充或其宽度或高度?

这就是我们使用 setbounds 的方式

drawableInstance.setBounds(L,T,R,B);

第一个场景

所以在上面的例子中,如果我分别为 L、T、R、B 设置 5、5、5、5,drawable 的 L、T、R、B 将始终分别来自其父级?我的意思是它会像在每边都设置隐藏的 5px 边框吗?此外,如果图像不够大以符合其父级的边框宽度,图像会更大吗?

第二种情况

我分别为L,T,R,B设置了5,5,100,100。我感到困惑的是,它将开始从远离父级 5px 到顶部和 5px 到左侧绘制。那将是起点。然后图像将是 100px,因为我将 100 设置为 right。所以它向右移动 100px。下右同。

但是我测试过了。我认为两者都不像我想的那样。它是如何工作的,尤其是与 setBounds 的每个参数相关的?

界限值是绝对的,不是相对的。即width == right - leftheight == bottom - top.

您的第一个示例 Drawable 的左上角位于 (5, 5),但宽度和高度均为 0

第二个例子的左上角也是(5, 5),宽度和高度都是95

边界不依赖于绘制 DrawableCanvas 的尺寸。例如,如果你用第二个例子的边界绘制一个 Drawable 到一个只有 5050View 上,它的左侧和顶部将插入5,但会在右边框和下边框被截断。