首先是如果继承android.support.v7.widget包下的控件,可能就会发生new出来之后,无法正常显示的情况。
原因就是v7包下的控件都需要依赖theme,如果没有activity没有设置好theme或者系统版本比较低,都会造成无法显示的情况
比如:
AppCompatCheckBox AppCompatEditText AppCompatButton
这些控件都有这种情况
解决的方法就是:
public MyEditText(Context context) {
this(context, null);
}
public MyEditText(Context context, AttributeSet attrs) {
//defStyleAttr参数不要传0,而是从com.android.R.attr中找对应的值
//checkBox就找checkboxStyle
//这样就能够解决了
this(context, attrs, com.android.internal.R.attr.editTextStyle);
}
public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}