2012-02-09 130 views
3

视图我有一个观点夸大,我可以画在帆布上,但似乎无法正确定位。安卓:在画布上绘制

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); 

但是视图总是在左上角。有人知道为什么

回答

1

定位您的视图坐标系统中的每个视图中绘制的内容它自己的坐标系,在左上方有(0,0)。如果你想让它出现在其他地方,你可以设置你的画布新transformation matrix

+1

那现在是有意义的,问题是子视图不正确绘制。那么“布局”是什么呢? – Johnny 2012-02-09 18:37:30

+0

有没有关于如何做到这一点的任何信息?我面临同样的问题。 – Peterdk 2013-10-29 18:00:11

1

因为Canvas开始使用来自左上角,而不是做了定义自定义视图,并覆盖onDraw()方法里面,只要你喜欢

+0

这是我做的,上面的代码是的onDraw()函数中。我错过了什么吗? – Johnny 2012-02-09 04:38:25

10

解决方案是把画布:

canvas.save(); 
canvas.translate(left, top);    
view.draw(canvas); 
canvas.restore(); 
0

使用drawChild(画布,儿童,getDrawingTime());而不是child.draw(画布)

drawChild将calc下孩子的顶部和左侧空白