我创建了一个自定义视图CircleView,如下所示:
public class CircleView extends LinearLayout {
Paint paint1;
public CircleView(Context context) {
super(context);
init();
}
public CircleView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public void init() {
paint1 = new Paint();
paint1.setColor(Color.RED);
}
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
canvas.drawCircle(50, 50, 25, paint1);
this.draw(canvas);
}
}
然后我将它包含在我的Activity的布局根<RelativeLayout>
:
<com.turkidroid.test.CircleView
android:id="@+id/circle_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true" />
然而,没有画出任何东西!
一些信息:
com.turkidroid.test
。onDraw()
方法中,我尝试了super.onDraw()
并对其进行评论。答案 0 :(得分:28)
您的onDraw方法永远不会被调用,您需要在自定义视图的构造函数上调用setWillNotDraw(false)才能实际调用onDraw。
如Android SDK所述:
如果此视图本身不进行任何绘制,请将此标志设置为allow 进一步优化。默认情况下,此标志未在View上设置,但是 可以在某些View子类(如ViewGroup)上设置。通常,如果 你重写onDraw(android.graphics.Canvas)你应该清除它 标志。
答案 1 :(得分:0)
您的this.draw()
方法在哪里?
这应该最终确定:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(50, 50, 25, paint1);
//this.draw(canvas); where is this method?
}