首先是如果繼承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);
}