我知道这个问题已经被问过很多次了,但是通过代码实现似乎很困难。
我想要实现的是扩展ConstraintLayout
并添加两个视图。我有以下代码:
class TestLayout @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
private val ids = mutableListOf<Int>()
init {
addTextView()
addTextView()
val set = ConstraintSet()
set.clone(this)
set.connect(ids[0], ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 200)
set.connect(ids[1], ConstraintSet.TOP, ids[0], ConstraintSet.BOTTOM)
set.applyTo(this)
}
private fun addTextView() {
val view = TextView(context)
addView(view, LayoutParams(LayoutParams.MATCH_CONSTRAINT, LayoutParams.WRAP_CONTENT))
view.id = View.generateViewId()
view.text = view.id.toString()
ids.add(view.id)
}
}
当运行此代码时,第一个视图正常显示,但第二个视图位于左上角(就像没有对其进行约束一样)。
我在这里缺少什么?