Установка ограничений программно 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 - это просто класс утилит, чтобы сделать видимость видимой / невидимой / пропавшей. Если бы кто-то мог указать на то, что я делаю неправильно, я был бы очень благодарен.

0 ответов

Другие вопросы по тегам