Android
ConstraintLayout
Поиск…
Вступление
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.
- Добавьте библиотеку Constraint Layout в качестве зависимости в файле
build.gradle
:
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
- Проект синхронизации
Чтобы добавить новый макет ограничения в свой проект:
- Щелкните правой кнопкой мыши каталог макета модуля и выберите «
New > XML > Layout XML.
- Введите имя макета и введите
"android.support.constraint.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">
</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-документация по цепочкам.