Android Constraint Layout alignemnt - PullRequest
0 голосов
/ 04 марта 2019

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

У меня есть представление, которое имеет 3 текстовых просмотра 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 или мне нужно настроить программно?

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

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

0 голосов
/ 07 апреля 2019

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

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

0 голосов
/ 04 марта 2019

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

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

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

...