如何通过视图填充收缩画布?

Bar*_*ski 3 java android canvas ondraw

我正在构建一个自定义视图,在其中重写 onDraw 方法。

有没有办法通过此视图填充值收缩画布(作为 onDraw 中的参数接收)?

并回答有关填充本身的任何可能的问题 - 就我而言,我不能使用边距。我需要使用填充物。

Gil*_*yof 5

每个视图都有 getPaddingTop/Bottom/Left/Right() 方法,这些方法将为您提供每个填充的值。

当您使用画布进行绘画时,您需要确保始终在以下限制内进行绘画:

minX = getPaddingLeft()
maxX = getWidth() - getPaddingLeft() - getPaddingRight()
minY = getPaddingTop()
maxY = getHeight() - getPaddingTop() - getPaddingBottom()
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想限制画布上可以绘制的区域,请尝试在画布上使用以下调用:

canvas.clipRect(minX, minY, maxX, maxY, Region.Op.REPLACE);
Run Code Online (Sandbox Code Playgroud)

超出这些限制的任何内容都将被忽略。

请记住,这将很好地工作,直到您开始在画布上执行转换(例如翻译)。一旦你开始这样做,事情就会开始变得有点奇怪,你可能需要在运行时改变clipRect。