我创建了一个自定义视图 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
.
- In
onDraw()
方法,我尝试包括super.onDraw()
并评论它。
- 我知道我可以用更简单的方法画一个圆圈,但是我的 CircleViewwill包含的不仅仅是画一个圆圈。我需要将其设为自定义视图。
Your onDraw
方法永远不会被调用,您需要调用setWillNotDraw(false)
在自定义视图的构造函数上以获得onDraw
实际上打电话了。
正如 Android SDK 中所述:
如果此视图本身不进行任何绘图,请设置此标志以允许
进一步优化。默认情况下,View 上没有设置此标志,但是
可以在某些 View 子类上设置,例如ViewGroup
。通常,如果
你覆盖onDraw(android.graphics.Canvas)
你应该清除这个
旗帜。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)