Android
ConstraintLayout
수색…
소개
ConstraintLayout
은 위젯을 유연하게 배치하고 크기를 지정할 수있는 ViewGroup
입니다. Android 2.3 (API 레벨 9) 이상과 호환됩니다.
평면 뷰 계층 구조로 크고 복잡한 레이아웃을 생성 할 수 있습니다. RelativeLayout
과 비슷하지만 형제보기와 상위 레이아웃 간의 관계에 따라 모든보기가 배치되지만 RelativeLayout
보다 유연하고 Android Studio의 레이아웃 편집기에서 사용하기가 더 쉽습니다.
통사론
ConstraintLayout
public void addView (View 자식, int 인덱스, ViewGroup.LayoutParams params)
Public ConstraintLayout.LayoutParams generateLayoutParams (AttributeSet attrs)
public void onViewAdded (뷰보기)
public void onViewRemoved (뷰보기)
public void removeView (뷰 뷰)
public void requestLayout ()
보호 된 부울 값 checkLayoutParams (ViewGroup.LayoutParams params)
ConstraintLayout.LayoutParams generateDefaultLayoutParams ()를 보호합니다.
ViewGroup.LayoutParams generateLayoutParams (ViewGroup.LayoutParams params)를 보호합니다.
protected void onLayout (boolean changed, int left, int top, int right, int bottom) 지정된 보더를 돌려줍니다.
보호 된 void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
ConstraintLayout.LayoutParams
공개 무효의 resolveLayoutDirection (int layoutDirection)
public void validate ()
보호 된 void setBaseAttributes (TypedArray a, int widthAttr, int heightAttr)
매개 변수
매개 변수 | 세부 |
---|---|
어린이 | 레이아웃에 추가 할 View |
색인 | 레이아웃 계층의 View 색인 |
매개 변수 | View 의 LayoutParams |
attrs | LayoutParams 를 정의하는 AttributeSet |
전망 | 추가 또는 삭제 된 View |
변경된 | 이 View 크기 또는 위치가 변경되었는지 여부를 나타냅니다. |
왼쪽 | 부모 View 기준으로 한 왼쪽의 위치 |
상단 | 부모의 View 기준으로 한 위의 위치. |
권리 | 상위 View 대한 올바른 위치 |
바닥 | 부모를 기준으로 하단 위치 View |
widthMeasureSpec | 부모 View 에 의해 부과 된 수평 공간 요구 사항 |
heightMeasureSpec | 부모 View 에 의해 부과 된 수직 공간 요구 사항 |
layoutDirection | - |
에이 | - |
widthAttr | - |
heightAttr | - |
비고
Google IO 2016에서 Google은 ConstraintLayout이라는 새로운 Android 레이아웃을 발표했습니다.
현재이 레이아웃은 베타 버전 이므로주의를 기울여야합니다.
제약 레이아웃에 대한 자세한 내용 :
https://codelabs.developers.google.com/codelabs/constraint-layout/index.html
프로젝트에 ConstraintLayout 추가하기
ConstraintLayout을 사용하려면 Android Studio 버전 2.2 이상이 필요하며 버전 32 이상의 Android 지원 리포지토리가 있어야합니다.
- Constraint Layout 라이브러리를
build.gradle
파일의 종속 항목으로 추가하십시오.
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.0.2'
}
- 프로젝트 동기화
프로젝트에 새로운 구속 조건 레이아웃을 추가하려면 :
- 모듈의 레이아웃 디렉토리를 마우스 오른쪽 버튼으로 클릭 한 다음
New > XML > Layout XML.
을 클릭하십시오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
제약와 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 안드로이드 설명서입니다.