2012-02-09 131 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下孩子的頂部和左側空白