我有一个扩展RelativeLayout的自定义视图。 这有很多孩子。 我只想剪辑子项,但我的代码剪辑我的自定义视图。
public class LoadingBox extends RelativeLayout
{
@Override
protected void dispatchDraw(Canvas canvas)
{
save = canvas.save();
canvas.getClipBounds(clipRect);
clipRectF.set(clipRect.left, clipRect.top, clipRect.right,
clipRect.bottom);
clipPath.addRoundRect(clipRectF, 40f, 40f, Path.Direction.CW);
canvas.clipPath(clipPath);
super.dispatchDraw(canvas);
canvas.restoreToCount(save);
}
}
我测试了
@Override
protected void onDraw(Canvas canvas){...}
,但我再次接受这个结果。
我如何剪辑儿童不是自我观点?
答案 0 :(得分:0)
我找到了答案。 我使用下面的代码
LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup layout = (ViewGroup) layoutInflater.inflate(R.layout.loading_box, this);
这是错误,
必须创建子视图动态并覆盖drawChild
@Override
protected boolean drawChild(Canvas canvas, View child, long drawingTime)
{
boolean result;
canvas.save();
clipPath.reset();
canvas.getClipBounds(clipRect);
clipRectF.set(clipRect.left, clipRect.top, clipRect.right, clipRect.bottom);
clipPath.addRoundRect(clipRectF, radius-2, radius-2, Path.Direction.CW);
canvas.clipPath(clipPath);
result = super.drawChild(canvas, child, drawingTime);
canvas.restore();
return result;
}