У меня есть два барьера на основе XML, которые используются для разделения некоторых кнопок в календаре, который я создаю.Вот XML:
<android.support.constraint.ConstraintLayout
android:id="@+id/teamScheduleConstraintLayout"
android:layout_width="match_parent"
android:layout_height="500dp"
app:layout_constraintTop_toTopOf="parent">
<Button
android:id="@+id/buttonPreviousMonth"
android:layout_width="90dp"
android:layout_height="50dp"
android:text="@string/previousMonth"
app:layout_constraintEnd_toStartOf="@+id/teamScheduleCurrentMonth"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/teamScheduleCurrentMonth"
style="@style/textViewGeneral"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:gravity="center"
android:text="July 2019"
android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@+id/buttonNextMonth"
app:layout_constraintStart_toEndOf="@+id/buttonPreviousMonth"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonNextMonth"
android:layout_width="90dp"
android:layout_height="50dp"
android:text="@string/nextMonth"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/teamScheduleCurrentMonth"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Barrier
android:id="@+id/monthSelectorBarrier"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
app:barrierDirection="bottom"
app:constraint_referenced_ids="buttonPreviousMonth,teamScheduleCurrentMonth,buttonNextMonth" />
<android.support.constraint.Barrier
android:id="@+id/closeButtonBarrier"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
app:barrierDirection="top"
app:constraint_referenced_ids="teamScheduleCloseButton"
app:layout_constraintTop_toBottomOf="@id/monthSelectorBarrier" />
<Button
android:id="@+id/teamScheduleCloseButton"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="@string/CloseButton"
android:textAlignment="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/closeButtonBarrier" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
tools:layout_editor_absoluteX="136dp"
tools:layout_editor_absoluteY="211dp" />
</android.support.constraint.ConstraintLayout>
Далее я пытаюсь программно добавить новый барьер для каждой новой строки дней в календаре:
Barrier newRow = new Barrier(getContext());
int barrierId = View.generateViewId();
newRow.setId(barrierId);
newRow.setType(Barrier.BOTTOM);
layout.addView(newRow);
Допустим, я создал двановые барьеры, 1 и 2. Когда я ограничиваю некоторые TextViews в «@ + id / monthSelectorBarrier», они отображаются правильно.Но когда я ограничиваю их барьером 1, все они переходят к вершине обзора:
![Barrier](https://i.stack.imgur.com/WTy8L.png)
Я устанавливаю первый новый барьер, чтобы сидеть прямов «@ + id / monthSelectorBarrier», используя код, подобный приведенному ниже, но он все еще идет в верхнюю часть ConstraintLayout.
Вот код для установки программно созданного барьера, чтобы он находился под другим программно созданным барьером (allDaysэто массив int идентификаторов TextView, поэтому я могу добавить их к каждому барьеру):
constraintSet.clone(layout);
constraintSet.connect(2, ConstraintSet.TOP, 1, ConstraintSet.BOTTOM);
constraintSet.connect(2, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START);
constraintSet.connect(2, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END);
constraintSet.connect(allDays[i], ConstraintSet.TOP, 2, ConstraintSet.BOTTOM);
constraintSet.applyTo(layout);
Что мне нужно изменить, чтобы все барьеры правильно выстроились друг под другом?