Android 自定義 View 通常需要實作三種建構式:
View(Context context):以程式碼動態建立 View 時呼叫。View(Context context, AttributeSet attrs):從 XML 配置檔案載入 View 時呼叫。View(Context context, AttributeSet attrs, int defStyleAttr):支援樣式屬性時呼叫。new MyView(context) 建立,XML 建構式自然不會被執行,這是正常行為。AttributeSet 會導致自定義屬性無法讀取。public class MyView extends View {
public MyView(Context context) {
super(context);
init(context, null);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
private void init(Context context, AttributeSet attrs) {
// 初始化自定義屬性
}
}