在Android中,我有两个类文件MainActivity和CanV。
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
CanV.kt,这是一个View类。class CanV(context: Context, attributeSet: AttributeSet): View(context){ ... }
activity_main.xml中的CanV View <com.app.app_name.CanV
android:id="@+id/cans"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0">
</com.app.app_name.CanV>
现在,我想在MainActivity中创建CanV类对象。我来尝试:
val c: CanV = CanV(this, ?)
但是,我不知道AttributeSet参数值。如何创建和传递CanV View 的AttributeSet? 最佳答案
如果您希望能够同时从XML和Java / Kotlin创建CanV
实例,则应提供两个构造函数:
class CanV : View {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
...
}
可以从Kotlin(val v: CanV = CanV(this)
)中使用第一个,从XML扩展时自动使用第二个。