關於三個構造函數使用時機的說法 也就是說,系統預設只會調用Custom View的前兩個構造函數,至於第三個構造函數的調用,通常是我們自己在構造函數中主動調用的(例如,在第二個構造函數中調用第三個構造函數). ...
public class MyCustomView extends View { //第一個構造函數 public MyCustomView(Context context) { this(context, null); } //第二個構造函數 public MyCustomView(Context context, AttributeSet attrs) { this(context, attrs, 0); } //第三個構造函數 public MyCustomView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO:獲取自定義屬性 } .... }
關於三個構造函數使用時機的說法
- 在代碼中直接new一個Custom View實例的時候,會調用第一個構造函數.這個沒有任何爭議.
- 在xml佈局文件中調用Custom View的時候,會調用第二個構造函數.這個也沒有爭議.
- 在xml佈局文件中調用Custom View,並且Custom View標簽中還有自定義屬性時,這裡調用的還是第二個構造函數.
也就是說,系統預設只會調用Custom View的前兩個構造函數,至於第三個構造函數的調用,通常是我們自己在構造函數中主動調用的(例如,在第二個構造函數中調用第三個構造函數).