参考:http://zhidao.baidu.com/link?url=ZnoSOhnyblr1EFWsymK1ngfeX8nXIQPqLeNantUF7O1meNeJhpiwujA-QsF6AT7PkaMFKCxjhxjc884Q3JwTJK
理解:
public View (Context context) :
在java代码创建视图的时候被调用,如果是从xml填充的视图,就不会调用这个
public View (Context context, AttributeSet attrs) :
这个是在xml创建但是没有指定style的时候被调用
public View (Context context, AttributeSet attrs, int defStyle):
这在xml创建并且指定style的时候被调用
For further
View的第三个构造函数的第三个参数defStyle
- 如果在Code中实例化一个View会调用第一个构造函数,
- 如果在xml中定义会调用第二个构造函数,
- 而第三个函数系统是不调用的,要由View(我们自定义的或系统预定义的View)显式调用,比如在这里我们在第二个构造函数中调用了第三个构造函数,并将R.attr.CustomizeStyle传给了第三个参数。
public Button(Context context) {
this(context, null);
}
public Button(Context context, AttributeSet attrs) {
this(context, attrs, com.android.internal.R.attr.buttonStyle);// 显示调用style
}
public Button(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}