如何以编程方式在约束布局中添加视图?

我正在设计下面的布局

<android.support.constraint.ConstraintLayout android:id="@+id/before_breakfast_option" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/diabetes_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="16dp" android:layout_marginStart="16dp" android:text="water" android:textAppearance="@style/TextAppearance.AppCompat.Medium" android:textColor="@color/black" app:layout_constraintBaseline_toBaselineOf="@+id/toogle_diabeties" app:layout_constraintLeft_toLeftOf="parent"/> <TextView android:textColor="@color/black" android:text="almonds" app:layout_constraintTop_toTopOf="parent" android:id="@+id/toogle_diabeties" app:layout_constraintRight_toRightOf="parent" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </android.support.constraint.ConstraintLayout> 

使用下面的代码:

  var textView= TextView(this@DietStepFive) textView.id=100 textView.text="water" textView.background=ContextCompat.getDrawable(this@DietStepFive,R.drawable.rectangle_diet) textView.setTextColor(ContextCompat.getColor(this@DietStepFive,R.color.black)) var textView1= TextView(this@DietStepFive) textView1.id=101 textView1.text="almonds" textView1.background=ContextCompat.getDrawable(this@DietStepFive,R.drawable.rectangle_diet) textView1.setTextColor(ContextCompat.getColor(this@DietStepFive,R.color.black)) var constraintset= ConstraintSet() constraintset.clone(before_breakfast_option) //left to left of constraintset.connect(textView.id,ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0) //baseline constraintset.connect(textView.id,ConstraintSet.BASELINE,textView1.id,ConstraintSet.BASELINE,0) //right to right of constraintset.connect(textView1.id,ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0) //top to top of constraintset.connect(textView1.id,ConstraintSet.TOP,ConstraintSet.PARENT_ID,ConstraintSet.TOP,0) constraintset.applyTo(before_breakfast_option) before_breakfast_option.addView(textView) before_breakfast_option.addView(textView1) 

但是,XML代码给了我有两个textview的布局,一个是左边,一个是右边,但是kotlin代码给了我两个textview在左边重叠。 为什么?

什么错了? 任何主角?

TextView添加到布局,然后像设置XML一样连接它们。 你添加了视图THEN连接它们。

移动

 before_breakfast_option.addView(textView) before_breakfast_option.addView(textView1) 

之前

 var constraintset= ConstraintSet() 

一切都应该工作。

也许别人会在将来使用它。 一个完美的睡眠和工作完成。 我使用了错误的约束。

而不是这个

  //left to left of constraintset.connect(textView.id,ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0) //baseline constraintset.connect(textView.id,ConstraintSet.BASELINE,textView1.id,ConstraintSet.BASELINE,0) //right to right of constraintset.connect(textView1.id,ConstraintSet.RIGHT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0) //top to top of constraintset.connect(textView1.id,ConstraintSet.TOP,ConstraintSet.PARENT_ID,ConstraintSet.TOP,0) 

用这个

 //left to right of constraintset.connect(textView1.id,ConstraintSet.LEFT,textView.id,ConstraintSet.RIGHT,10) //baseline constraintset.connect(textView1.id,ConstraintSet.BASELINE,textView.id,ConstraintSet.BASELINE,0) 

尝试替换app:layout_constraintRight_toRightOf="parent"

使用app:layout_constraintRight_toRightOf="@+id/toogle_diabeties"