각 레이아웃마다 xml속성이 다르기 때문에 본인이 사용하기에 편리한 레이아웃을 하나 선택해서 공부를 하는게 좋을것 같다.
개인적으로는 가장 편리하다고 느껴진 ConstratingLayout, 그 다음으로 잘 사용하는 LinearLayout.
LinearLayout
orientation : 가로 또는 세로방향 정렬 (horizontal, vertical)
weight : 가중치 한쪽 방향으로 치우쳐진 것을 길이를 늘리는데 사용.
horizontal 방향이라면 width=0으로 설정한다. vertical 방향이라면 height=0
만약 horizontal방향에서 3개의 view가 있는데 그중 1개가 weight를 설정하지 않고 나머지는 weight 비율이 설정되어 있다면, weight가 설정되지 않은 view는 그대로 자신의 너비값을 갖고 나머지 공간에 2개가 비율을 나눠갖게 된다.(width가 뷰들로 꽉 차게 됨)
weightSum : 그러나, 공백으로 남기고 싶은 경우가 있다면, weightSum을 통해 전체 비율을 정해주고, 각각의 비율을 정해주면 된다.
layout_weight
layout_gravity
layout_속성 : layout 내에서 view가 정렬되는 위치를 결정하는 속성 (예: layout_gravity)
속성 : view 위젯 내에 표시되는 내용이 정렬되는 위치를 정하기 위한 속성.layout과는 관계없다.(예: gravity)
만약 LinearLayout에서 gravity 속성을 정해준다면, 레이아웃 내에 있는 view가 정렬된다는 의미이고
view에서 layout_gravity 속성을 정해준다면 layout에서 gravity에 해당하는 view의 위치가 정해진다는 의미이다.
[참고]
RelativeLayout
기준위치가 되는 기준점은 1) RelativeLayout의 자식 뷰 간의 상대적인 위치 2) 부모인 RelativeLayout 기준 상대적 위치
(기본적으로 2)에서는 가로와 위가 초기값)
속성의 종류(위치)
layout_위치 = "@id/기준 view id"
layout_alignParent위치 = "true/false" =>부모의 ~위치로.
layout_align위치 : 기준이 되는 뷰에 해당하는 기준선을 맞춰줌.
layout_위치와 layout_alignParent위치를 동시에 사용하거나
layout_위치와 layout_align위치를 사용하면 표현의 폭을 넓힐 수 있다.
layout_center위치
한국어는 좌에서 우로 적기 때문에 Left와 start가 같은 의미이고 Right와 end가 같은 의미.
가로 혹은 세로방향을 지정해주지 않는다면 부모 레이아웃의 초기값으로 배정되는듯 하다
수평과 수직방향에 대한 설정을 하는것이라고 생각하면 될것같다
[참고]
Constraint Layout
자신의 크기(wrap_content) : dp지정
또는
제약의 크기(0dp 사용). 이 경우, 너무 딱 맞기 때문에, 여백을 주기 위해 패딩과 마진을 사용하는것 같다.
수평/수직 위치 에 대한 제약
layout_margin여백위치
layout_goneMargin대상위치 : 대상 뷰가 없어져도 마진을 얼만큼 준다는 의미
layout_constraint<S1>_to<S2>of : 해당 뷰의 S1 위치를 S2에 위치한다.
app:layout_constraintLeft_toLeftOf="parent"또는 "view id"
"layout_gravity" 속성이 적용되지 않는다.
Relativelayout과의 차이는,
"자식 뷰 간 상대 위치"와 "자식 뷰와 부모 간 상대 위치"를 동일한 속성을 통해 지정 가능하고, 맞춤 정렬(Alignment)을 위한 속성이 별도로 존재하지 않는다는 차이가 있습니다.
맞닿는다
center 없다
bias
1)맞닿는 부분을 기준으로 2)확장한다. =연장선을 그리는 느낌
[참고]
[참고]
https://recipes4dev.tistory.com/161?category=658689
FrameLayout
맨마지막뷰가 맨위에 보여짐
'--------------------***** > 모바일프로그래밍(안드로이드)' 카테고리의 다른 글
setOnClickListener() (0) | 2020.05.02 |
---|---|
Java Generics (0) | 2020.04.24 |
android studio layout editor (0) | 2020.04.15 |
import 자동 반영 (0) | 2020.04.10 |
서비스 브로드캐스트 리시버 (0) | 2020.04.05 |