How do I create a constraint layout programmatically

5k views Asked by At

I am new to constraint layout and have a hard time figuring out how to create it programmatically.

Here's my xml code for it:

<RelativeLayout
        android:id="@+id/ShareContainer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginBottom="0dp"
        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/StatusContainer"
        app:layout_constraintBottom_toTopOf="@+id/ButtonContainer">

        <com.myapp.ui.testLayout
            android:id="@+id/ShareVideo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/black"/>

        <ImageButton
            android:id="@+id/ShareToggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="36dp"
            android:layout_marginLeft="16dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_video_cam_switch" />
    </RelativeLayout> 

e.g. what are the code equivalents of

app:layout_constraintDimensionRatio, app:layout_constraintLeft_toLeftOf, 
app:layout_constraintRight_toLeftOf, app:layout_constraintTop_toBottomOf, 
app:layout_constraintBottom_toTopOf, etc
2

There are 2 answers

1
Valentun On

You can create constraint layout programmatically similarly you create any other layout. Also, you can programmatically set constraints using ConstraintSet.

In your case:

ConstraintSet set = new ConstraintSet (context);
int id = R.id.ShareContainer, root_id=R.id.root_container; // I don't know root container id, so suppose it is root_container

// ratio
set.setDimensionRatio(id, "16:9");

//SIDE to SIDE of VIEW
set.connect(id, BOTTOM, root_id, BOTTOM, 8); //object, side,  anchor, anchor's side, margin
set.applyTo(contraintLayout);
0
Arul Pandian On

XML code : app:layout_constraintTop_toBottomOf="@id/furnishTypeGroup"

code

 val layoutParams = myView.getLayoutParams() as ConstraintLayout.LayoutParams
                layoutParams.topToBottom = R.id.furnishTypeGroup
                myView.setLayoutParams(layoutParams)