Constraint Layout에서 Barrier와 Guideline의 차이점은 무엇입니까?
최근에 구현하기 위해 노력하고 Constraint Layout
있지만 발견 Barrier
과 Guideline
동일하게 작동합니다. 둘 다 분배기처럼 작동합니다. 그들 사이에 어떤 차이가 있습니까?
장벽을 사용할 때
TextView
동적 높이 가있는 두 개의 위젯이 Button
있고 가장 높은 위젯 바로 아래 에 배치하고 싶다고 가정 해 보겠습니다 TextView
.
만 레이아웃에 직접 그것을 구현하는 방법은 수평을 사용하는 것입니다 Barrier
. 그것은 Barrier
당신이 그 두의 높이에 따라 제약 조건을 지정할 수 TextView
의. 그런 다음 상단을 Button
수평 하단으로 제한합니다 Barrier
.
<?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/left_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:textSize="16sp"
android:background="#AAA"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/right_text_view"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/right_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
android:textSize="16sp"
android:background="#DDD"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/left_text_view"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="left_text_view,right_text_view" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="Button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/barrier" />
</android.support.constraint.ConstraintLayout>
지침을 사용하는 경우
TextView
콘텐츠에 관계없이 위에서 언급 한 높이를 화면 높이의 30 % 로 제한하고 싶다고 가정 해 보겠습니다 .
이를 구현하려면 Guideline
백분율 위치와 함께 수평 을 추가 하고 TextView
하단을 해당 위치로 제한 해야합니다 Guideline
.
<?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/left_text_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="#AAA"
android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintEnd_toStartOf="@+id/right_text_view"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/right_text_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="#DDD"
android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@+id/guideline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/left_text_view"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="Button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/guideline" />
<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.3" />
</android.support.constraint.ConstraintLayout>
결론
유일한 차이점은 사이 Barrier
와 Guideline
점이다 Barrier
의 위치가 유연하고 항상 포함 여러 UI 요소의 크기를 기준 Guideline
의 위치는 항상 고정되어있다 '는.
Barrier는 여러 위젯을 입력으로 참조하고 지정된 쪽에서 가장 극단적 인 위젯을 기반으로 가상 가이드 라인을 만듭니다. 예를 들어 왼쪽 장벽은 참조 된 모든 뷰의 왼쪽에 정렬됩니다.
지침과 마찬가지로 장벽은 뷰를 제한 할 수있는 보이지 않는 선입니다. 장벽이 자신의 위치를 정의하지 않는 것을 제외하고는; 대신 장벽 위치는 그 안에 포함 된보기의 위치에 따라 이동합니다. 이는보기를 하나의 특정보기가 아닌보기 세트로 제한하려는 경우에 유용합니다.
'IT박스' 카테고리의 다른 글
Constexpr 대 매크로 (0) | 2021.01.11 |
---|---|
Angular 2 : 배열의 변화를 감지하는 방법은 무엇입니까? (0) | 2021.01.11 |
Visual Studio Community 2015 내에서 Android 용 Xamarin을 업데이트하는 방법 (0) | 2021.01.10 |
차세대 데이터베이스 (0) | 2021.01.10 |
Vim의 여러 자동 명령 (0) | 2021.01.10 |