我创建了一个类似于这样的自定义视图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" />
然而,没有任何东西被绘制出来!
- 我是否正确地实现了自定义视图?
- 还是我使用自定义视图的方式有问题?
一些信息:
- CircleView和MyActivity都在同一个包中:
com.turkidroid.test
。 - 在
onDraw()
方法中,我尝试包含super.onDraw()
并注释掉它。 - 我知道可以用更简单的方法画一个圆形,但我的CircleView将会包含不仅仅是画圆。我需要将它变成一个自定义视图。
java.lang.StackOverflowError
异常!有什么想法吗? - iTurkisuper.onDraw()
后,您的建议非常有效。谢谢! - iTurki