您可以在布局xml中轻松创建约束:
但是,我无法在代码中做完全相同的事情。 有人可以帮助将以下xml转换为Java代码吗?
<TextView
...
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@+id/details"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/image"
app:layout_constraintTop_toTopOf="parent" />
我尝试了以下代码来设置边距,但是它不起作用。 textView始终位于同一位置。
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(textView.getLayoutParams());
layoutParams.setMargins(10,10,10,10);
description.setLayoutParams(layoutParams);
答案 0 :(得分:1)
约束不是LayoutParams的一部分。
您要查找的是在ConstraintLayout本身上设置的 ConstraintSet 。
final ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.connect(R.id.textViewId, ConstraintSet.BOTTOM, R.id.details, ConstraintSet.TOP,10 /*"DP"*/);
constraintSet.connect(R.id.textViewId, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END,10 /*"DP"*/);
constraintSet.connect(R.id.textViewId, ConstraintSet.START, R.id.image, ConstraintSet.END,10 /*"DP"*/);
constraintSet.connect(R.id.textViewId, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP,10 /*"DP"*/);
constraintSet.applyTo(constraintLayout);
请记住,在代码中,作为最后一个参数传递的值将以像素为单位,因此您必须将其转换为尺寸像素(DP)。