具体详情已经写在代码注释中

public class InputNumberView extends RelativeLayout {
public InputNumberView(Context context) {
this(context, null);
}

public InputNumberView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public InputNumberView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//inflate方法的第一个参数:要载入的布局文件
//第二个参数:ViewGroup,把布局文件应用到ViewGroup中,这里传入this即可
//第三个参数:attachToRoot 填true表示,把这个载入的布局文件绑定到当前的ViewGroup里面
//为true时,这样就会将载入的布局内容,自动的添加到ViewGroup中
LayoutInflater.from(context).inflate(R.layout.view_number_view, this, true);

//不填也行
/*
源码:不填默认就是true
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root) {
return inflate(resource, root, root != null);
}

*/
LayoutInflater.from(context).inflate(R.layout.view_number_view, this);

//填false,需要手动添加载入的View
View view = LayoutInflater.from(context).inflate(R.layout.view_number_view, this, false);
addView(view);

//以上三种方式功能都是一样的,都是把View添加到当前容器里。
}


}