Intereting Posts
Веб-сервис с KSOAP Service.onDestroy () вызывается сразу после создания, в любом случае Служба выполняет свою работу Как настроить Android SeekBar для того, чтобы он был неуправляемым / замороженным? DefaultHttpClient для AndroidHttpClient Android: есть ли способ получить размер объекта RemoteViews? Сделать части текстового кликабельными (не URL-адрес) Получение размера окна БЕЗ заголовков / предупреждений Как правильно использовать и отслеживать приложения? Как отключить состояние отключенного состояния Spinner? Буферизация Поверхностный вход в MediaCodec Как создать экземпляр класса фрагмента с использованием имени класса вместо индекса Как изменить снимок, показанный в списке последних приложений? Как получить битмап из Uri? Android: расширенный индикатор группы ExpandableListView большой, когда я использую свой собственный значок Как добавить плитки на карту Google и их анимацию, т.е. заменить их на новые плитки непрерывно

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

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

    Ограничительные цепи

    Недавно разработчики Android выпустили новую версию ConstraintLayout (альфа-9 на сегодняшний день). Эта версия содержит новую важную функцию – Chains , которая позволяет группировать представления в ConstraintLayout .

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

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

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

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

    В настоящее время для использования этой функции вам необходимо использовать следующую зависимость градиента (так как это альфа):

      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> 

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

     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>