天天看點

記錄一下AppCompat上踩的坑

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