我正在构建一个自定义视图,我在其中覆盖onDraw方法。
是否有办法通过此视图填充值来收缩画布(在onDraw中作为参数接收)?
并回答有关填充本身的任何可能的问题 - 在我的情况下,我不能使用边距。我需要使用填充。
答案 0 :(得分:2)
每个视图都有getPaddingTop / Bottom / Left / Right()方法,它们将为每个填充提供值。
当您使用画布绘制时,您需要确保始终在这些限制范围内绘制:
minX = getPaddingLeft()
maxX = getWidth() - getPaddingLeft() - getPaddingRight()
minY = getPaddingTop()
maxY = getHeight() - getPaddingTop() - getPaddingBottom()
修改强>:
如果要限制画布上可以绘制的区域,请尝试在Canvas上使用以下调用:
canvas.clipRect(minX, minY, maxX, maxY, Region.Op.REPLACE);
任何超出这些限制的内容都将被忽略。
请记住,在您开始在画布上执行转换(例如翻译)之前,这将很有效。一旦你开始这样做,事情开始变得有点奇怪,你可能需要在运行时改变clipRect。
答案 1 :(得分:0)
一个选项是创建一个内部大小的位图(没有填充),将其传递给库,并将位图绘制到画布上
另一种选择是使用带有矩阵的contact()来转换画布,该矩阵通过左边和上边的填充移动画布。还剪辑画布,以便库无法在底部和右侧填充的顶部绘制