ConstraintLayout(제약 레이아웃)

레이아웃 내의 뷰/위젯들을 다른 요소와의 관계를 통해 배치한다. 뷰의 연결점과 대상을 연결한다. 예를 들어 버튼 두 개를 레이아웃 내에 배치할 때, 두 버튼의 연결점을 부모의 아래(bottom)에 연결하고 각각 부모의 왼쪽(start), 오른쪽(end)에 연결한다. 이후 버튼 두 개를 서로 연결하여 배치할 수 있다. 이처럼 연결점과 대상의 관계를 통해 뷰를 배치하는 레이아웃이다. 서로 간의 간격(margin)을 둘 수 있으며 편향(bias)를 사용해 치우침 정도를 조절할 수 있다. 직접 값을 입력해 위치를 조절할 수 있다. 배치하기에 편리하다.

ConstraintLayout 디자인

 

LinearLayout(선형 레이아웃)

이름 그대로 선형적으로 배치하는 레이아웃이다. Orientation에 따라 vertical하게 혹은 horizontal하게 배치할 수 있다. 두 뷰를 떨어뜨리기 위해서 margin 값을 조절하여 떨어뜨릴 수 있으며 layout_gravity 값을 지정해 왼쪽(left/start)이나 오른쪽(right/end), 혹은 위(top)나 아래(bottom)에 붙일 수 있다. 보통 LinearLayout 안에 LinearLayout을 넣어 다양한 구성을 할 수 있게 한다. 예로 들어 이력서나 보고서 양식을 구현하기에 좋다.

LinearLayout 디자인

RelativeLayout(상대 레이아웃)

ConstraintLayout이 나오기 이전에 주로 사용한 레이아웃이다. RelativeLayout으로 만들 수 있는 화면은 대부분 ConstraintLayout으로 만들 수 있다. RelativeLayout은 부모나 다른 뷰와의 상대적인 위치를 이용해 뷰의 위치를 결정한다. alignParentTop / alignParentBottom, alignParentLeft / alignParentRight와 같은 명령을 통해 부모와의 관계를 설정할 수 있고, above / below, toLeftOf / toRightOf와 같은 명령을 통해 다른 뷰와의 관계를 설정할 수 있다. 이 레이아웃 또한 margin 값을 통해 떨어뜨릴 수 있다.

TableLayout(테이블 레이아웃)

TalbeLayout은 엑셀처럼 표를 나타내기에 적합한 레이아웃이다. TableRow가 한 행을 뜻하며 TableRow를 추가하면 열이 증가한다. , TableRow를 통해 행과 열을 구성한다. TableRow로 구성하다 보면 한 행이 화면을 꽉 채우지 않는데 이 경우 stretchColumns 명령을 통해 남은 공간을 배분할 수 있다. 또한 spanweight을 통해 column 병합이 가능하다. 다시 말해 row 병합은 불가능하다.

TableLayout 코드 및 디자인

GridLayout(그리드 레이아웃)

GridLayoutTableLayout과 유사하다. 우선 GridLayout은 행과 열의 개수를 지정하여 사용한다. 따라서 각각의 셀에 접근하기 용이하며 열 병합도 가능하다. 또한 열이나 행에 가중치(weight)을 부여해 비율을 조절할 수 있다.

GridLayout 코드 및 디자인

FrameLayout(프레임 레이아웃)

FrameLayoutvisible / invisible로 숨겼다가 보여줬다 하는 기능을 추가할 수 있다. , 버튼을 추가 해 만약 버튼이 눌렸을 때 visible이나 invisible 상태로 바꿀 수 있게 해준다.

반응형

'ANDROID' 카테고리의 다른 글

[안드로이드 웹 프로그래밍] 뷰와 레이아웃  (0) 2020.10.30

뷰(view)는 안드로이드 UI 구성 요소이다. 즉, 사용자에게 보이는 화면 구성 요소들이라고 할 수 있다.

 

"뷰 & 뷰그룹 관계"

반응형

+ Recent posts