簡體   English   中英

Android Kotlin-如何擴展ConstraintLayout?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM