코린이 탈출기

Constraint Layout (1) - Relative Positioning 본문

안드로이드/안드로이드

Constraint Layout (1) - Relative Positioning

50HEE 2021. 9. 6. 15:10

안드로이드 스튜디오의 Layout 중에서 Constraint Layout에 관해 알아보겠습니다.

 

https://developer.android.com/reference/androidx/constraintlayout/widget/ConstraintLayout#nested-classes

 

안드로이드 개발자를 위한 사이트로 안드로이드 스튜디오에 관한 내용을 다루는 사이트입니다.

원문을 보고 싶으시면 참고하세요.

 

Constraint Layout은 말 그대로 제약 조건을 주어 레이아웃을 배치하는 것을 말합니다.

가로와 세로축에서 위젯을 제한할 수 있습니다.

수평 축은 왼쪽, 오른쪽, 시작 그리고 끝 측면을 / 수직 축은 위쪽, 아래쪽 그리고 텍스트 기준선을 말합니다.

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

제한한다는 것은 위치를 공유하도록 시도한다는 것을 의미합니다.

 

예를 들면, A 버튼과 B 버튼이 있다고 가정을 하면 A 버튼의 옆에 B를 위치시켜봅시다.

A 버튼의 오른쪽 면과 B 버튼의 왼쪽 면이 만나야 한다고 표현할 수 있습니다.

이처럼 각 위젯의 방향을 공유하는 것을 의미합니다.

 

이러한 방향을 공유하는 방법은 각 위젯에 id를 부여하여 사용하거나, 상위 컨테이너인 parent를 이용하면 됩니다.

여기서 상위 컨테이너인 parent는 (기본 설정 시) 화면 전체를 의미합니다.

 

 

 

 

 

위 그림은 각 위젯의 방향을 의미합니다.

이러한 방향을 사용해서 위치를 정할 수 있습니다.

 

 

 

안드로이드 스튜디오에서 사용하는 Constraint Layout의 목록을 알려드리겠습니다.

  • 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

 

위의 코드를 작성 시에는 매우 헷갈릴 수 있습니다.

그래서 저는 저만의 방식으로 '지금 만드는 위젯의 방향  +  같이 위치시킬 위젯의 방향'으로 외워서 사용하는 중입니다.

 

코드를 작성 시에는 꼭 수평 축과 수직 축을 하나씩 넣어주지 않으면 에러가 발생합니다.

수평 축의 경우에는 가로 또는 세로 중 하나, 수직 축은 아래 또는 위 중 하나씩 꼭 넣어주어야 합니다.

하지만 만약 width 또는 height를 match_parent로 작성 시에는 해당하는 측면에 대해 작성하지 않아도 됩니다.

해당하는 측면을 전부 사용한다는 의미이기 때문에 굳이 위치를 제한하지 않아도 되는 것입니다.

Comments