今天写一个自定义控件的时候,发现没有调用onDraw,控件是继承了LinearLayout
网上找的资料,加下面这句话就好了
setWillNotDraw(false);
看方法名差不多知道意思了,不会调用onDraw方法,没有去查继承哪些控件会默认这个标志位为true
/**
* 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 override {@link #onDraw(android.graphics.Canvas)}
* you should clear this flag.
*
* @param willNotDraw whether or not this View draw on its own
*/
这个是方法的注释,就不翻译了,一搜一大把和这个相关的博客
目前已知的是继承自View不会设置这个,但是ViewGroup和LinearLayout会默认为true,看起来应该是为了提高性能