Reputation: 2910
I have a view inflated, I can draw it on canvas, but can't seem to position it properly.
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);
But the view is always at the top left corner. Anyone know why?
Upvotes: 6
Views: 19029
Reputation: 4448
use drawChild(canvas,child,getDrawingTime()); instead of child.draw(canvas)
drawChild will calc child's top and left margin
Upvotes: -1
Reputation: 16005
Solution is to translate canvas:
canvas.save();
canvas.translate(left, top);
view.draw(canvas);
canvas.restore();
Upvotes: 14
Reputation: 2774
Each View draws its contents within its own coordinate system, with (0, 0) at the top-left. If you want it to appear elsewhere, you can set a new transformation matrix on your Canvas.
Upvotes: 3