Поиск…


Вступление

ConstraintLayout - это ViewGroup которая позволяет ViewGroup и ViewGroup размеры виджетов. Он совместим с Android 2.3 (API уровня 9) и выше.

Он позволяет создавать большие и сложные макеты с иерархией с плоским представлением. Он похож на RelativeLayout на то, что все представления выложены в соответствии с отношениями между представлениями сестры и родительским макетом, но он более гибкий, чем RelativeLayout и более простой в использовании с редактором макетов Android Studio.

Синтаксис

  • ConstraintLayout

    • public void addView (просмотр дочернего объекта, индекс int, параметры ViewGroup.LayoutParams)

    • public ConstraintLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

    • public void onViewAdded (View view)

    • public void onViewRemoved (View view)

    • public void removeView (Просмотреть представление)

    • public void requestLayout ()

    • protected boolean checkLayoutParams (параметры ViewGroup.LayoutParams)

    • protected ConstraintLayout.LayoutParams generateDefaultLayoutParams ()

    • protected ViewGroup.LayoutParams generateLayoutParams (параметры ViewGroup.LayoutParams)

    • protected void onLayout (boolean changed, int left, int top, int right, int bottom)

    • protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

  • ConstraintLayout.LayoutParams

    • public void resolveLayoutDirection (int layoutDirection)

    • public void validate ()

    • protected void setBaseAttributes (TypedArray a, int widthAttr, int heightAttr)

параметры

параметр подробности
ребенок View который будет добавлен в макет
индекс Индекс View в иерархии макета
Титулы LayoutParams View
ATTRS AttributeSet , который определяет LayoutParams
Посмотреть View , которое было добавлено или удалено
изменено Указывает, изменил ли этот View размер или положение
оставил Левое положение относительно родительского View
Топ Верхнее положение относительно родительского View
право Правильное положение относительно родительского View
низ Нижняя позиция относительно родительского View
widthMeasureSpec Требования к горизонтальному пространству, предъявляемые родительским View
heightMeasureSpec Требования к вертикальному пространству, предъявляемые родительским View
LayoutDirection -
-
widthAttr -
heightAttr -

замечания

В Google IO 2016 Google анонсировала новый план Android под названием ConstraintLayout.
Обратите внимание, потому что в настоящее время этот макет является бета-релизом .

Больше о шаблоне ограничения:

https://codelabs.developers.google.com/codelabs/constraint-layout/index.html

Добавление ConstraintLayout к вашему проекту

Для работы с ConstraintLayout вам потребуется Android Studio версии 2.2 или новее и иметь как минимум 32 (или выше) поддержки Android Support Repository.

  1. Добавьте библиотеку Constraint Layout в качестве зависимости в файле build.gradle :
dependencies {
   compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
  1. Проект синхронизации

Чтобы добавить новый макет ограничения в свой проект:

  1. Щелкните правой кнопкой мыши каталог макета модуля и выберите « New > XML > Layout XML.
  2. Введите имя макета и введите "android.support.constraint.ConstraintLayout" для корневого тега.
  3. Нажмите « Готово» .

В противном случае просто добавьте в файл макета:

<?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">

</android.support.constraint.ConstraintLayout>

Цепи

Поскольку ConstraintLayout alpha 9, доступны цепочки . Цепь представляет собой набор представлений внутри ConstraintLayout , которые связаны между собой двунаправленно, т. Е. A, связанный с B с ограничением, и B, связанный с A с другим ограничением.

Пример:

<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">

    <!-- this view is linked to the bottomTextView --> 
    <TextView
        android:id="@+id/topTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"
        app:layout_constraintBottom_toTopOf="@+id/bottomTextView"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_chainPacked="true"/>

    <!-- this view is linked to the topTextView at the same time --> 
    <TextView
        android:id="@+id/bottomTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bottom\nMkay"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/topTextView"/>

</android.support.constraint.ConstraintLayout>

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

app:layout_constraintVertical_bias="0.2"

В вертикальной цепочке первый элемент представляет собой самый верхний вид, а в горизонтальной цепочке это самый левый вид. Первый элемент определяет поведение всей цепочки.

Цепи - это новая функция и часто обновляются. Вот официальная Android-документация по цепочкам.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow