我创建了这样一个自定义视图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);
}
}然后,我将其包含在活动的布局根<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()并对其进行注释。发布于 2012-09-04 10:41:38
您的onDraw方法从未被调用过,您需要在自定义视图的构造函数上调用setWillNotDraw(false),以便实际调用onDraw。
正如Android中所述:
如果此视图本身不进行任何绘图,则设置此标志以允许进一步优化。默认情况下,此标志不在视图上设置,但可以在某些视图子类(如
ViewGroup)上设置。通常,如果重写onDraw(android.graphics.Canvas),则应清除此标志。
发布于 2012-09-04 11:23:55
您的this.draw()方法在哪里?
这项工作应明确地发挥作用:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(50, 50, 25, paint1);
//this.draw(canvas); where is this method?
}https://stackoverflow.com/questions/12261435
复制相似问题