2

Android 开发新手,我无法使用画布对视图进行简单绘图。

据我了解,是这样的:

import android.content.Context;
import android.graphics.Canvas;
import android.view.View;

public class DrawView extends View
{
    public DrawView(Context context)
    {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawRGB(255,0,0);
    }
}

以此作为我的活动:

public class Prototype1 extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

这对于布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <com.dhs2.prototype1.DrawView
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

应该到处画红色,但我只是得到一个空白屏幕。知道我哪里出错了吗?

4

1 回答 1

5

由于您在 XML 布局文件中添加了自定义视图,因此您应该再添加 2 个构造函数:

public DrawView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}


public DrawView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

这是因为您将一些属性传递给视图,例如fill_parent, wrap_content,因此public DrawView(Context context)不会调用构造函数。

但是,如果您不在 XML 布局文件中声明自定义视图,而是直接从以下方式设置它,这将起作用onCreate()

setContentView(new DrawView(this));
于 2012-08-02T15:49:32.030 回答