Групповые представления в ConstraintLayout для обработки их как единого представления

Мне нужно применить некоторые ограничения к группе взглядов вConstraintLayout, Я хочу сгруппировать эти виды и продолжить редактирование, пока дизайнер макетов в студии Android рассматривает их как единый вид. Есть ли способ сделать это, фактически не оборачивая взглядыViewGroup (другой макет)? Если такая обертка необходима, возможно, есть макет обертки, который поставляется сConstraintLayout и позволяет группировать объекты без создания тяжелых макетов, таких какRelativeLayout?

Ответы на вопрос(2)

Ты можешь использовать

android.support.constraint.Guideline

сгруппировать элементы вместе.

Добавьте направляющую (вертикальную или горизонтальную), а затем используйте ее в качестве привязки для других видов. Вот простой пример горизонтального центрирования двух сгруппированных текстовых представлений: (показ дизайна в AS)

<?xml version="1.0" encoding="utf-8"?>
<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="56dp"
    android:background="@android:color/white"
    android:paddingLeft="16dp"
    android:paddingRight="16dp">


    <TextView
        android:id="@+id/top_text"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:background="@android:color/holo_red_light"
        android:textSize="16sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        android:text="Above"
        tools:text="Above" />

    <android.support.constraint.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.5" />

    <TextView
        android:id="@+id/bottom_text"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:background="@android:color/holo_blue_bright"
        android:textSize="16sp"
        app:layout_constraintTop_toBottomOf="@+id/guideline"
        android:text="Below"
        tools:text="Below" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="Right vertically centered"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="Right vertically centered"/>
</ConstraintLayout>
Решение Вопроса
ConstraintLayout Chains

ConstraintLayout (1.0.2 на сегодня). Эта версия содержит новую важную функцию -Цепи, что позволяет нам группировать представления вConstraintLayout.

Цепочки обеспечивают групповое поведение на одной оси (по горизонтали или по вертикали).

Набор виджетов считается цепочкой, если они связаны между собой через двунаправленное соединение

После создания цепочки есть две возможности:

Распределите элементы в доступном пространствеЦепочка также может быть «упакована», в этом случае элементы сгруппированы вместе

В настоящее время вам нужно использовать следующую зависимость gradle, чтобы использовать эту функцию (так как это альфа):

 compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'

Вот Вы можете найти новейшую версиюConstraintLayout использовать в своих проектах.

До тех порAndroid Studio 2.3Разработчик пользовательского интерфейса Android Studio не поддерживает создание цепочек, поскольку вы не можете добавить в него двунаправленные ограничения. Решением было создать эти ограничения в XML вручную, как упоминалосьTranslucentCloud, В Android Studio 2.3 (в настоящее время только на канальном канале) цепочки поддерживаются и в редакторе пользовательского интерфейса (какGoRoS упоминается в комментариях).

пример

Ниже приведен пример того, как расположить два вида вместе в середине экрана, используяConstraintLayout а такжецепи:

<?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"
    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_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="TextView"
        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.5"
        app:layout_constraintVertical_chainPacked="true"/>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView"/>
</android.support.constraint.ConstraintLayout>
Обновление (январь 2018 г.)@Mateus Gondim

В последних версиях вы должны использоватьapp:layout_constraintVertical_chainStyle="packed" вместоapp:layout_constraintVertical_chainPacked="true"

 GoRoS12 нояб. 2016 г., 00:26
Однако новая Android Studio 2.3 в настоящее время в канарском канале поддерживает цепочки в представлении редактора макетов.tools.android.com/recent/androidstudio23canaryavailable
 Mateus Gondim11 янв. 2018 г., 20:23
В настоящее время вы должны использоватьapp:layout_constraintVertical_chainStyle="packed" вместоapp:layout_constraintVertical_chainPacked="true", Я наconstraint-layout:1.0.2' версия и последняя больше не работает.
 TranslucentCloud20 окт. 2016 г., 19:31
Необходимо добавить, что в Android Studio 2.2.2 нет возможности устанавливать двунаправленные соединения через User Interface Designer, поэтому их необходимо указывать непосредственно в ресурсах XML.

Ваш ответ на вопрос