안드로이드

안드로이드 ConstrainLayout이란? 제약조건 유형 및 RelativePositioning (상대 위치 지정) 제약 조건

알통몬_ 2017. 11. 8. 13:36
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 

이번 포스팅에서는 

안드로이드 ConstraintLayout 에 대해 알아보겠습니다.


 

      지원 버전 : API 9(진저브레드) 이상 버전에서 사용가능.  




 

개념 : 위젯을 유연하게 배치하고, 크기를 지정할 수 있는 ViewGroup입니다.



ConstraintLayout 은 RelativeLayout 의 확장판? 같은 느낌이라고 생각하시면 됩니다.


여러가지 제약조건을 사용함으로써 위젯들을 배치하시면 됩니다.


사용할 수 있는 제약조건 유형들은 아래와 같습니다.


  • Relative positioning 상대적 배치
  • Margins  여백
  • Centering positioning 중앙 배치
  • Circular positioning 원형 뱌차
  • Visibility behavior 가시성 동작
  • Dimension constraints 측정 기준 제약 조건
  • Chains 체인
  • Virtual Helpers objects 가상 헬퍼 객체


이번 포스팅에서는 

Relative positioning

상대 위치 지정 에 대해 알아보겠습니다.


Relative positioning은 ConstraintLayout에서

레이아웃을 구성하는 기본 요소 중에 하나 입니다.


이 제약 조건을 통해서 특정 위젯을 다른 위젯에 상대적으로 배치할 수 있습니다.


배치 방법에는 수평축과 수직축이 있습니다.

아래 그림의 숫자를 써놨습니다.

수평축 : left(2), right(3), start(2), end(3)

수직축 : top(4), bottom(5), text baseline(1)


일반적인 개념은 위젯의 주어진 면을 다룬 위젯의 다른 면으로 제한하는 것이라고 합니다.


예를 들어 

B라는 버튼을 A라는 버튼 오른쪽에 배치하고 싶다면

<Button android:id="@+id/btnA" ... />

         <Button android:id="@+id/btnB" ...

                 app:layout_constraintLeft_toRightOf="@+id/btnA" />

이런 식으로 작석하시면 됩니다.



아래 목록은 

Relative positioning에서 사용할 수 제약조건들 입니다.

layout_constraintLeft_toLeftOf


layout_constraintLeft_toRightOf


layout_constraintRight_toLeftOf


layout_constraintRight_toRightOf


layout_constraintTop_toTopOf


layout_constraintTop_toBottomOf


layout_constraintBottom_toTopOf


layout_constraintBottom_toBottomOf


layout_constraintBaseline_toBaselineOf


layout_constraintStart_toEndOf


layout_constraintStart_toStartOf


layout_constraintEnd_toStartOf


layout_constraintEnd_toEndOf


어떻게 적용이 되나 살펴보면

앞에 있는 left, right, top, bottom, .... 이

해당 제약조건을 선언하고 있는 위젯이고,

toXXXOf에 들어가는 위치가 "@+id/btnA" 의 위치입니다.

바로 위를 예로 들면

버튼 B 의 End 면과 버튼 A의 End 면을 같은 위치로 해라

가 되겠습니다


그리고 마지막으로

부모 레이아웃에 대하여 상대 위치를 지정하고 싶다면,

"@+id/..." 대신에 "parent" 속성을 사용하시면 됩니다!!


다음 포스팅에서는 Margins 와

Circular positioning에 대해 알아보겠습니다.

반응형