我不是太清楚这一点,无论是文档。
当我创建一个自定义视图,我重写像这样:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//more code here...
}
我的问题是,是否有必要调用super.onDraw(canvas);
。 该代码似乎没有它工作得很好,但我想,以确保它的好离开它。
因此,有必要吗?
我不是太清楚这一点,无论是文档。
当我创建一个自定义视图,我重写像这样:
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
//more code here...
}
我的问题是,是否有必要调用super.onDraw(canvas);
。 该代码似乎没有它工作得很好,但我想,以确保它的好离开它。
因此,有必要吗?
如果你想让它调用父类的onDraw方法(TextView的思考或KeyboardView,而不是一个通用的视图),然后调用super.onDraw。 如果你不希望出现这种情况,即你正在计划绘制整个看待自己(这看来你是),没有理由来调用它。
另外,如果你在扩展视图(而不是一些类,它扩展视图),super.onDraw并没有真正做任何事情。
对于我来说,我打电话super.onDraw时,我想画在KeyboardView线。 所以,super.onDraw平键盘,和我的自定义LatinKeyboardView(延伸KeyboardView)借鉴了键盘顶部的刷卡通路。
在源代码中的窥视显示View.onDraw()
是一个空的方法。 因此,呼吁super.onDraw()
如果父类是View
本身,什么也不做。 这是不必要的又是无害的。
无论你应该继续做吧是的效率,安全性和风格的独立问题。
是的。 如果您自定义一个TextView,该super.onDraw将确保提请任何属于TextView的属性(如文本,文本颜色,文字阴影,等...),与其他浏览像按钮一样,复选框...
如果您的自定义视图扩展视图(View的不是一个具体的子类,只需查看),它仍然是最好保留super.onDraw(画布)也有一段查看绘图方法(如setBackgroundDrawable,等...)
它不是必需的,除非你实际上是重写onDraw()
方法。 如果新的类没有覆盖它,超级的方法会自动被调用。