Szukaj…


Wprowadzenie

ConstraintLayout to ViewGroup która pozwala na pozycjonowanie i rozmiar widżetów w elastyczny sposób. Jest kompatybilny z Androidem 2.3 (API poziom 9) i wyższym.

Umożliwia tworzenie dużych i złożonych układów z płaską hierarchią widoków. Jest podobny do RelativeLayout ponieważ wszystkie widoki są ułożone zgodnie z relacjami między widokami rodzeństwa i układem nadrzędnym, ale jest bardziej elastyczny niż RelativeLayout i łatwiejszy w użyciu z edytorem układu Android Studio.

Składnia

  • ConstraintLayout

    • public void addView (Wyświetl potomek, indeks wewnętrzny, parametry ViewGroup.LayoutParams)

    • public ConstraintLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

    • public void onViewAdded (Wyświetl widok)

    • public void onViewRemoved (Zobacz widok)

    • public void removeView (Wyświetl widok)

    • public void requestLayout ()

    • chronione boolean checkLayoutParams (parametry ViewGroup.LayoutParams)

    • chroniony ConstraintLayout.LayoutParams generateDefaultLayoutParams ()

    • chronione ViewGroup.LayoutParams generateLayoutParams (parametry ViewGroup.LayoutParams)

    • protected void onLayout (zmieniono wartość logiczną, int left, int top, int right, int bottom)

    • protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

  • ConstraintLayout.LayoutParams

    • public void resolLayoutDirection (int layoutDirection)

    • public void validate ()

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

Parametry

Parametr Detale
dziecko View do dodania do układu
indeks Indeks View w hierarchii układu
parametry LayoutParams of View
attrs AttributeSet który definiuje LayoutParams
widok View , który został dodany lub usunięty
zmienione Wskazuje, czy ten View zmienił rozmiar lub pozycję
lewo Lewa pozycja względem nadrzędnego View
Top Stanowisko góry, w stosunku do dominującego View
dobrze Właściwej pozycji w stosunku do dominującego View
Dolny Dolna pozycja względem nadrzędnego View
widthMeasureSpec Wymagania dotyczące przestrzeni poziomej nałożone przez View macierzysty
heightMeasureSpec Wymagania dotyczące przestrzeni pionowej nałożone przez View macierzysty
layoutDirection -
za -
widthAttr -
heightAttr -

Uwagi

Na Google IO 2016 Google ogłosił nowy układ Androida o nazwie ConstraintLayout.
Zwróć uwagę, ponieważ obecnie ten układ jest wersją Beta .

Więcej informacji o układzie ograniczeń:

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

Dodawanie ConstraintLayout do swojego projektu

Aby pracować z ConstraintLayout, potrzebujesz Android Studio w wersji 2.2 lub nowszej i przynajmniej wersji 32 (lub wyższej) repozytorium obsługi Androida.

  1. Dodaj bibliotekę układu ograniczeń jako zależność w pliku build.gradle :
dependencies {
   compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
  1. Synchronizuj projekt

Aby dodać nowy układ ograniczeń do swojego projektu:

  1. Kliknij prawym przyciskiem myszy katalog układu modułu, a następnie kliknij New > XML > Layout XML.
  2. Wprowadź nazwę układu i wpisz "android.support.constraint.ConstraintLayout" jako znacznik główny.
  3. Kliknij przycisk Zakończ .

W przeciwnym razie po prostu dodaj plik układu:

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

Więzy

Od wersji ConstraintLayout alfa 9 łańcuchy są dostępne. Łańcuch jest zestawem widoków wewnątrz ConstraintLayout które są połączone dwukierunkowo między nimi, tj. A połączone z B z ograniczeniem i B połączone z A z innym wiązaniem.

Przykład:

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

W tym przykładzie dwa widoki są umieszczone jeden pod drugim i oba są wyśrodkowane pionowo. Możesz zmienić pozycję tych widoków w pionie, dostosowując odchylenie łańcucha. Dodaj następujący kod do pierwszego elementu łańcucha:

app:layout_constraintVertical_bias="0.2"

W łańcuchu pionowym pierwszy element jest widokiem od góry, a w łańcuchu poziomym jest widokiem od lewej. Pierwszy element określa zachowanie całego łańcucha.

Łańcuchy są nową funkcją i są często aktualizowane. Oto oficjalna dokumentacja Androida dotycząca łańcuchów.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow