我已经创建了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