我对Android中的drawable的setbounds方法感到困惑。我知道它与drawable一起使用,它设置在drawable和它有多大的位置。简而言之,它定义了可绘制的边界矩形。但我很困惑:它是设置边框或填充还是宽度或高度?
这就是我们使用setbounds的方式
drawableInstance.setBounds(L,T,R,B);
因此,在上述情况下,如果我分别为L,T,R,B设置5,5,5,5,则可绘制的L,T,R,B将始终分别来自其父项?我的意思是它会像是为每一侧设置隐藏的5px边框吗?此外,如果图像不足以满足其父级的边框宽度,图像会更大吗?
我分别为L,T,R,B设置了5,5,100,100。令我困惑的是,它将从父母5px开始绘制到顶部,从左边开始绘制5px。那将是起点。然后图像将是100px因为我设置100为正确。所以它是正确的100px。与右下角相同。
但我测试了它。我认为两者都不如我所想。它是如何工作的,特别是与setBounds的每个参数有关?
答案 0 :(得分:25)
边界值是绝对值,而不是相对值。也就是width == right - left
和height == bottom - top
。
您的第一个示例将Drawable
的左上角位于(5, 5)
,但宽度和高度都为0
。
第二个示例的左上角也是(5, 5)
,宽度和高度都是95
。
边界不依赖于绘制Canvas
的{{1}}的尺寸。例如,如果您将Drawable
的第二个示例的边界绘制到仅Drawable
View
50
的{{1}},其左侧和顶部将插入50
,但它会在右边界和右边界被切断。