[英]Android: Draw a view on canvas
我有一个充气的视图,我可以在画布上绘制它,但似乎无法正确定位它。
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = li.inflate(R.layout.fix_this_recommendation, null);
v.measure(MeasureSpec.getSize(v.getMeasuredWidth()), MeasureSpec.getSize(v.getMeasuredHeight()));
v.layout(400, 400, 400, 400);
v.draw(canvas);
但视图始终位于左上角。 谁知道为什么?
解决方法是翻译画布:
canvas.save();
canvas.translate(left, top);
view.draw(canvas);
canvas.restore();
每个View在其自己的坐标系中绘制其内容,左上角为(0,0)。 如果您希望它出现在其他位置,您可以在Canvas上设置新的变换矩阵 。
因为Canvas
使用的坐标系从左上角开始而不是定义您的自定义视图并覆盖onDraw()
方法,并在其中定位视图,如您所愿
使用drawChild(canvas,child,getDrawingTime()); 而不是child.draw(画布)
drawChild将计算孩子的左上边距和左边距
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.