View的onDraw函数

自己定义一个View,重写onDraw方法(画一个红色的圆),然后add到某一个holder中,结果显示不出来。

显然是onDraw函数没有调用。


1.  手动触发

onDraw是一个触发事件产生的调用,一般只能通过特定的方法触发调用:invalidate和postInvalidate


2. 可以在构造函数里设置该view的backgroundcolor,即setBackgroundColor(Color.rgb(0, 255, 0)); 会自动触发onDraw函数

3. 使用setWillNotDraw(false),即不拦截onDraw函数的调用

public void setWillNotDraw (boolean willNotDraw)
Since: API Level 1
If this view doesn't do any drawing on its own, set this flag to allow further optimizations. By default, this flag is not set on View, but could be set on some View subclasses such as ViewGroup. Typically, if you overrideonDraw(Canvas) you should clear this flag.
willNotDraw whether or not this View draw on its own


参考

http://blog.sina.com.cn/s/blog_4b50130d0100u0uk.html
http://blog.csdn.net/hearrt/article/details/7001358


你可能感兴趣的:(View的onDraw函数)