[英]Android Kotlin - How to extend ConstraintLayout?
我希望ConstaintLayout帶有額外的其他屬性,但是我很難擴展它。 更准確地說,我在將正確的構造函數放入時遇到了麻煩
class myCL(): ConstraintLayout(???) {
}
為了確保您在行為上沒有任何怪異,您應該像這樣實現它。
class myCL: ConstraintLayout {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?,
@AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr)
}
您真正需要的構造函數是帶有所有參數的構造函數:
class myCL(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
ConstraintLayout(context, attrs, defStyleAttr) {
}
如果要輕松實現所有三個構造函數,則可以使用@JvmOverloads
並使用明智的默認值。
class myCL @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : ConstraintLayout(context, attrs, defStyleAttr) {
}
參見https://developer.android.com/reference/android/support/constraint/ConstraintLayout
您也可以這樣做,只打一個super
電話-
class MyConstraintLayout: ConstraintLayout {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, -1)
constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.