Установка ограничений программно Android
Итак, у меня есть ConstraintLayout
с 3 buttons
<android.support.constraint.ConstraintLayout
android:id="@+id/buttons_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/teams_layout">
<android.support.constraint.Guideline
android:id="@+id/guideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.50" />
<Button
android:id="@+id/details_button"
style="@style/ButtonText"
android:layout_width="0dp"
android:layout_height="49dp"
android:layout_marginBottom="16dp"
android:layout_marginEnd="2dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/guideline2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/tickets_button"
style="@style/ButtonText"
android:layout_width="0dp"
android:layout_height="49dp"
android:layout_marginBottom="16dp"
android:layout_marginStart="5dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline2"
app:layout_constraintTop_toTopOf="parent"/>
<Button
android:id="@+id/refresh_button"
style="@style/ButtonText"
android:layout_width="0dp"
android:layout_height="49dp"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</android.support.constraint.ConstraintLayout>
Теперь я хочу установить visibility
и размер кнопок зависит от 2 логических переменных. Если одна из переменных будет ложной, я хочу установить ширину кнопки в соответствии с родителем, поэтому я попытался изменить ограничение от начала направляющей до конца родителя, но, похоже, это никак не отразилось. Ситуация такая же, когда дело доходит до второй кнопки. Вот код:
if (!tickets && news) {
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(buttonsLayout);
constraintSet.clear(nextMatchDetailsButton.getId(), ConstraintSet.END);
constraintSet.connect(nextMatchDetailsButton.getId(), ConstraintSet.END, buttonsLayout.getId(), ConstraintSet.END);
constraintSet.applyTo(buttonsLayout);
}
ViewHelper.setVisibleOrInvisible(nextMatchDetailsButton, news);
if (tickets && !news) {
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(buttonsLayout);
constraintSet.clear(nextMatchTicketsButton.getId(), ConstraintSet.START);
constraintSet.connect(nextMatchTicketsButton.getId(), ConstraintSet.START, buttonsLayout.getId(), ConstraintSet.START);
constraintSet.applyTo(buttonsLayout);
}
ViewHelper.setVisibleOrInvisible(nextMatchTicketsButton,tickets);
ViewHelper - это просто класс утилит, чтобы сделать видимость видимой / невидимой / пропавшей. Если бы кто-то мог указать на то, что я делаю неправильно, я был бы очень благодарен.