2017-06-02 86 views
0

我尝试使用下面的代码设计如下布局如何以编程方式在约束布局中添加视图?

<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([email protected]) 
        textView.id=100 
        textView.text="water" 
        textView.background=ContextCompat.getDrawable([email protected],R.drawable.rectangle_diet) 
        textView.setTextColor(ContextCompat.getColor([email protected],R.color.black)) 

        var textView1= TextView([email protected]) 
        textView1.id=101 
        textView1.text="almonds" 
        textView1.background=ContextCompat.getDrawable([email protected],R.drawable.rectangle_diet) 
        textView1.setTextColor(ContextCompat.getColor([email protected],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重叠在左侧。为什么?

什么是错误的?任何主角?

+0

添加到这两个TextView的 –

+0

我加入左重力的TextView和向右textview1但没有任何反应@TerrilThomas –

+0

layout_gravity而布局重心不只是重力 –

回答

-2

尝试更换app:layout_constraintRight_toRightOf="parent"

app:layout_constraintRight_toRightOf="@+id/toogle_diabeties"

+0

我的xml代码工作正常,不是kotlin代码。 –

1

TextView S添加到布局,然后将它们连接起来就像你一样建立XML时。你添加了视图,然后连接它们。

移动

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

var constraintset= ConstraintSet() 

,一切都应该工作。

+0

它不按预期工作。结果和以前一样@Cheticamp –

+0

@AnkurKhandelwal你绝对需要这样做,但这可能不是你唯一的问题。我对Kotlin不熟悉,所以如果是Kotlin问题,我无法帮助。我想知道'before_breakfast_option'指的是什么,你是否真的得到了你的约束。这是一个[快速要点](https://gist.github.com/Cheticamp/4e74a6210728b952cb35e7e2a5656b91)Java代码,你可以看看。它可以帮助你找出你剩下的问题。 – Cheticamp

+0

@AnkurKhandelwal我做了上述要点转换为Kotlin,并成功运行结果。这是工作Java代码的[Kotlin版本](https://gist.github.com/Cheticamp/e0af76d73f7a10367efe4dde4ff2f877)。我希望这有帮助。 – Cheticamp

0

也许其他人将在未来使用它。完美的睡眠和完成的工作。 我使用了错误的约束。

取而代之的是

   //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) 
相关问题