Android自定义视图:Xml vs以编程方式

时间:2017-10-11 16:10:14

标签: android xml view

我正在view中实施自定义Android。我总是这样创造它,例如:

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.view1);
CustomView customView = new CustomView(relativeLayout.getContext());
relativeLayout.addView(customView);

这很好用。但是当我尝试不同的东西时:

CustomView customView = (CustomView) findViewById(R.id.customView);

在xml中它是这样的:

 <com.my.package.CustomView
       android:id="@+id/customView"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

我收到了错误: android.view.InflateException:二进制XML文件行#14:错误导致类

我的自定义视图扩展了RelativeLayout,这是唯一的构造函数:

public CustomView(Context c){
    super(c);
    //adding some html to the webview here
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

从XML使用自定义视图时,不会使用单个参数构造函数。相反,将使用两个/三个参数构造函数。

您还应该添加其他构造函数:

public CustomView(Context context) {
    super(context);
}

public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}