Programmatically set margin to ConstraintLayout

You might wanna try

ViewGroup.MarginLayoutParams params = yourConstraintLayout.getLayoutParams();
params.topMargin = x;
//others shows up in suggestion

I haven't tried it though I believe it should work as ConstraintLayout is a ViewGroup.


Finally with help of @Aksh I found my mistake and solve my problem. If someone find it useful, I will put my code bellow

     ConstraintLayout.LayoutParams newLayoutParams = (ConstraintLayout.LayoutParams) toolbar.getLayoutParams();
     newLayoutParams.topMargin = 0;
     newLayoutParams.leftMargin = 0;
     newLayoutParams.rightMargin = 0;
     toolbar.setLayoutParams(newLayoutParams);

good way to add margin to a view in constraintlayout

val constraintSet = ConstraintSet()
constraintSet.clone(constraintLayoutId)
val marginTop = context.getDimension(10f)
constraintSet.setMargin(R.id.tv_user, ConstraintSet.TOP, marginTop)
constraintSet.applyTo(constraintLayoutId)

fun Context.getDimension(value: Float): Int {
    return TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP, value, this.resources.displayMetrics).toInt()
}

I once modified a ConstraintLayout with a ConstraintSet to change the elements it got linked with. I also changed the margin within that process which is the last parameter of the connect method:

ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(layout);
constraintSet.connect(
    R.id.layout_id, 
    ConstraintSet.START, 
    R.id.layout_id2, 
    ConstraintSet.END, 
    8);
constraintSet.applyTo(layout);

Maybe this gives you another hint to find a solution?