Android Constraint Layout alignemnt

1

У меня проблема с ConstraintLayout.

У меня есть представление, которое имеет 3 textviews T1, T2 и T3.

Условие: T1, T2 имеет верхнюю границу 4dp.

Проблема: T3 должен быть сверху, должен быть выровнен по верхнему виду. Состояние T1 будет видимым или исчезнет в зависимости от определенного условия.
Если T1 видим, маргинальная вершина будет 8dp, а когда T1 не видна, у T2 будет 12dp margintop.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="T1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="4dp"
        android:text="T2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />


    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:text="T3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/textView" />


</android.support.constraint.ConstraintLayout>

Это возможно с помощью XML или мне нужно настроить программно?

Теги:
layout
android-constraintlayout

3 ответа

0
Лучший ответ

Вы не можете достичь этого только с XML, то, что вы сделали, это создали экран, используя макет ограничения.
Если вы хотите добавить некоторую логику, чтобы изменить положение некоторого представления при определенных условиях, вам придется написать это программно.
Вот хорошая тема на эту тему.

0

Вы можете использовать layout_goneMarginTop чтобы иметь другое поле, когда ваш вид GONE.

Вы также можете использовать SequenceLayout для большей гибкости при управлении макетом. Используйте visibilityElement для каждого Span вы хотите пропустить, когда исчезнет ваше связанное представление.

0

Я точно не знаю ваш вариант использования, но вы можете сделать так, чтобы этот параметр был невидимым, а не пропущенным.

View.GONE Этот вид невидим, и он не занимает места для макета.

View.INVISIBLE Это представление невидимо, но все же занимает место для макета.

  • 0
    Это не сработает. Т3 должен соответствовать Т2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню