2017-06-02 21 views
0

ich das unten LayoutWie programmgesteuert hinzufügen Ansicht in Constraint-Layout?

<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> 

mit dem folgenden Code zu entwerfen versuchen:

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) 

Aber der XML-Code gibt mir das Layout, die man zwei Textview haben, ist eine linke Seite und man ist eine rechte seite aber kotlin code gibt mir die textview überlappung auf der linken seite. Warum?

was lief falsch? irgendein Blei?

+0

Layout hinzufügen Schwerkraft sowohl für den Textview –

+0

ich die linke Schwerkraft hinzugefügt haben, um Textview und Recht auf textview1 aber nichts passiert @TerrilThomas –

+0

layout_gravity eher als nur Schwerkraft –

Antwort

-2

Try app:layout_constraintRight_toRightOf="parent"

mit app:layout_constraintRight_toRightOf="@+id/toogle_diabeties"

+0

mein XML-Code funktioniert gut nicht der Kotlin-Code. –

1

Fügen Sie die TextView s an das Layout sie dann nur eine Verbindung zu ersetzen, wie Sie haben, wenn die XML-Einrichtung. Sie haben die Ansichten DANN hinzugefügt sie verbunden.

Verschieben

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

vor

var constraintset= ConstraintSet() 

und alles funktionieren sollte.

+0

Es funktioniert nicht wie erwartet. Ergebnis ist gleich wie vorher @Cheticamp –

+0

@AnkurKhandelwal Sie müssen definitiv den Umzug machen, aber das ist vielleicht nicht Ihr einziges Problem. Ich bin mit Kotlin nicht vertraut, wenn es eine Kotlin-Frage ist, kann ich nicht helfen. Ich frage mich, was "before_breakfast_option" betrifft und ob Sie tatsächlich Ihre Einschränkungen anwenden. Hier ist ein [quick gist] (https://gist.github.com/Cheticamp/4e74a6210728b952cb35e7e2a5656b91) von Arbeitscode in Java, den Sie sich ansehen können. Es kann Ihnen helfen, Ihre verbleibenden Probleme herauszufinden. – Cheticamp

+0

@AnkurKhandelwal Ich habe eine Umwandlung des oben genannten Kernpunktes nach Kotlin vorgenommen und das Ergebnis mit Erfolg ausgeführt. Hier ist die [Kotlin-Version] (https://gist.github.com/Cheticamp/e0af76d73f7a10367efe4dde4ff2f877) des funktionierenden Java-Codes. Ich hoffe das hilft. – Cheticamp

0

Vielleicht jemand anderes wird es in Zukunft verwenden. Ein guter Schlaf und Arbeit erledigt. Ich verwendete die falsche Einschränkung.

Statt dieser

   //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) 

Verwendung dieses

//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) 
Verwandte Themen