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);
}
}
Run Code Online (Sandbox Code Playgroud)
以此为我的活动:
public class Prototype1 extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Run Code Online (Sandbox Code Playgroud)
这个布局:
<?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>
Run Code Online (Sandbox Code Playgroud)
应该只是在任何地方绘制红色,但我只是得到一个空白的屏幕.知道我哪里错了吗?
由于您在XML布局文件中添加了自定义视图,因此您应该再添加2个构造函数:
public DrawView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public DrawView(Context context, AttributeSet attrs) {
super(context, attrs);
}
Run Code Online (Sandbox Code Playgroud)
这是因为你通过一些属性来看,像fill_parent,wrap_content,这样的构造public DrawView(Context context)将不会被调用.
但是,如果你不在XML布局文件中声明自定义视图,但是直接从onCreate()这样设置它:
setContentView(new DrawView(this));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1579 次 |
| 最近记录: |