Android: 扩展 RelativeLayout

Android: Extending RelativeLayout

我有一个 class 扩展 RelativeLayout 像这样:

class CustomLayout extends RelativeLayout {

  CustomLayout(Context context) {
      super(context, null, 0);
  }

  CustomLayout(Context context, AttributeSet attrs) {
      super(context, attrs, 0);
  }

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

}

我通过 XML 文件使用此布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"            
     xmlns:custom="http://schemas.android.com/apk/res-auto"        
     android:layout_width="match_parent"        
     android:layout_height="match_parent"           
     android:orientation="vertical">            
      <com.vj.myapp.CustomLayout        
           android:id="@+id/imageView_container"
           android:layout_width="match_parent"        
           android:layout_height="0dp"        
           android:background="#555"        
           android:layout_weight="1">                    
      </com.vj.myapp.CustomLayout>     
</LinearLayout>

但是应用崩溃了:

Error inflating class com.vj.myapp.CustomView

我确实提供了所需的构造函数。 怎么回事?

让他们public。构造函数必须可访问。

如果您使用 Android Studio,最简单的方法可能是按 ctrl+o 并选择要覆盖的方法。它将生成具有正确签名的存根,然后您可以根据需要修改代码。