我已經創建了RelativeLayout的子項。 在它的構造我叫:Android:在畫布和視圖上繪製(無位圖)
public CanvasHolder(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.canvas_holder, this);
this.draw(new Canvas());
}
,然後覆蓋方法的onDraw():
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
black.setARGB(255, 0, 0, 0);
black.setAntiAlias(true);
int halfWidth = this.getWidth()/2;
int height = this.getHeight();
canvas.drawLine(0, 0, halfWidth, height, black);
}
沒有線已經出現在視圖。 此外,我試圖不要調用「this.draw()」,但沒有發生任何事情。
我發現halfWidth和height等於0.爲什麼?
P.S.即使靜態設置寬度和高度,也不會改變。 如果你不介意的話,看看這個示例應用程序:爲什麼沒有繪製? http://androidforums.com/attachment.php?attachmentid=21715&stc=1&d=1315232946
也許在你的佈局已高度和寬度設置爲wrap_content?嘗試將其更改爲fill_parent或其他類似的東西。 – Joru
不,我設置了160px和220px的靜態值。 – QuickNick
這可能是因爲你在呼喚新的Canvas() - 它實際上沒有連接到視圖。如果你想創建一個視圖,請看一下SurfaceView的例子。 – Joru