[모바일 프로그래밍] 6. Layout

2023. 11. 8. 18:59·모바일프로그래밍
목차
  1. Layout
  2.  
  3. Layout 5가지
  4. Constraint Layout(제약 레이아웃)
  5.  
  6. 제약 조건 만들기
  7. Linear Layout(리니어 레이아웃)
  8.  
  9. gravity
  10. Weight
  11. Relative Layout

Layout

  • 어떻게 배치할 것인가
  • activity 같은 앱의 유저 인터페이스 구조를 정의
  • 레이아웃의 모든 요소는 View 및 ViewGroup 개체의 계층 구조를 사용하여 구축된다.

 


 

Layout 5가지

Constraint(제약 레이아웃) 제약조건 설정, 설정 안하면 디폴트 값
Linear(리니어 레이아웃) 방향을 지정하고 차례대로 뷰를 추가
Relative(상대 레이아웃) 규칙을 지정하여 다른 뷰 대비 상대적인 위치
Frame(프레임 레이아웃) 하나에 여러 뷰를 놓고 우선순위를 지정하여 중첩된 뷰를 전환하며 보여줌
Table(테이블 레이아웃) 격자 형태

 


 

Constraint Layout(제약 레이아웃)

  • 크기나 위치에 제약을 설정
    • 최소한 하나 이상의 제약조건을 걸어둔다.
    • 부모 레이아웃에 제약, 주변의 다른 뷰들에 대해 제약, 가이드라인을 통한 제약

 

제약 조건 만들기

  • 뷰의 네 방향 앵커 포인트를 상위 레이아웃의 경계 or 동일한 레이아웃 내 다른 뷰의 앵커 포인트에 연결
  • 최소 하나의 수직과 수평 앵커 포인트가 필요
  • 앵커 포인트 연결 가능한 대상
    • 1. 상위 레이아웃의 경계
    • 2. 동일한 레이아웃 내 다른 뷰의 앵커 포인트
    • 3. 가이드라인

 

  • 1. 상위 레이아웃의 경계

  • 2. 동일한 레이아웃 내 다른 뷰의 앵커 포인트

  • Bias는 네 방향을 모두 Constraint 한 다음 설정 가능

  • XML 코드에 값: 속성 짝
layout_constraint[SourceView Anchor]_to[TargetView Anchor]of="[TargetView ID]"

  • 3. 가이드라인

 


 

Linear Layout(리니어 레이아웃)

  • 한 방향으로 순차적으로 배열하여 화면 구성

  • 자식 View들이 나열되는 방향
  • Vertical : 세로 쌓기
  • Horizontal : 가로 쌓기
android:orientation="vertical"

 

gravity

  • 정렬, 개체가 자체 경계 내에서 X축과 Y축 모두에서 내용 배치 지정
android:layout_gravity 개별 정렬, 상위 컨테이너의 남은 공간 내에 정렬
android:gravity 자식 정렬, 화면에 표시되는 내용을 정렬(TextView: 텍스트, ImageView: 이미지)
  • 디폴트 왼쪽 맞춤
  • layout_gravity: center 중간 맞춤
  • layout_gravity: right 오른쪽 맞춤

  • Java 코드 LinearLayout 구현
LinearLayout mainLayout = new LinearLayout(this);    // Layout 오브젝트 생성자
mainLayout.setOrientation(LinearLayout.VERTICAL);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(    // 파라미터 세팅
    LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);

Button button1 = new Button(this);   // button 오브젝트 생성자
button1.setText("Button 01");
button1.setLayoutParams(params);
mainLayout.addView(button1);

setContentView(mainLayout);    // View 세팅
left, end(한글) 크기 변경 X, 개체를 컨테이너 왼쪽
right, start(한글) 크기 변경 X, 개체를 컨테이너 오른쪽
top 크기 변경 X, 개체를 컨테이너 시작
bottom 크기 변경 X, 개체를 컨테이너 바닥
center 크기 변경 X, 개체를 가로/세로 컨테이너 중앙
center_horizontal 크기 변경 X, 개체를 컨테이너 가로 중앙
center_vertical 크기 변경 X, 개체를 컨테이너 세로 중앙
clip_horizontal 자식의 왼/오른쪽 가장자리가 컨테이너 경계에 잘림, 수평 중력을 기반
왼쪽 중력: 오른쪽 가장자리 자름
오른쪽 중력: 왼쪽 가장자리 자름
양쪽 가장자리를 자르기 X
clip_vertical 자식의 위/아래쪽 가장자리가  컨테이너 경계에 잘림, 수직 중력을 기반
상단 중력: 하단 가장자리 자름
하단 중력: 상단 가장자리  자름
양쪽 가장자리를 자르기 X
fill 필요한 경우 개채의 가로/세로 늘려 컨테이너 완전히 채우기
fill_ horizontal 필요한 경우 개체의 가로 늘려 컨테이너 완전히 채우기
fill_vertical 필요한 경우 개체의 세로 늘려 컨테이너 완전히 채우기

 

Weight

  • 개별 하위 항목에 가중치를 할당
  • 뷰가 화면에서 차지하는 공간의 양과 관련하여 뷰에 "중요도" 할당
android:layout_weight

  • 동등 분배 1 : 1
  • 비동등 분배 1 : 2 : 1

 


Relative Layout

  • 자식 뷰를 상대적인 위치에 표시
  • 형제 요소 기준(예: 다른 보기의 왼쪽 또는 아래) 지정
  • RelativeLayout 영역을 기준(예: 아래쪽, 왼쪽 또는 가운데 정렬) 지정

layout_above 지정된 뷰 위에 뷰 배치
layout_below 지정된 뷰 아래에 뷰 배치
layout_toLeftOf 지정된 뷰 왼쪽에 뷰 배치
layout_toRightOf 지정된 뷰 오른쪽에 뷰 배치
layout_alignTop 지정된 뷰 상단에 뷰 상단  맞추기
layout_alignBottom 지정된 뷰 하단에 뷰 하단 맞추기
layout_alignLeft 지정된 뷰 왼쪽에 뷰 왼쪽 맞추기
layout_alignRight 지정된 뷰 오른쪽에 뷰 오른쪽 맞추기
layout_alignBaseline 지정된 뷰 내용의 기준선에 뷰 기준선 맞추기
layout_alignParentTop 상위 컨테이너의 상단에 뷰의 상단 맞추기
layout_alignParentBottom 상위 컨테이너의 하단에 뷰의 하단 맞추기
layout_alignParentLeft 상위 컨테이너의 왼쪽에 뷰의 왼쪽 맞추기
layout_alignParentRight 상위 컨테이너의 오른쪽에 뷰의 오른쪽 맞추기
layout_centerHorizontal 상위 컨테이너의 수평 중앙에 뷰 배치
layout_centerVertical 상위 컨테이너의 수직 중앙에 뷰 배치
layout_centerInParent 상위 컨테이너의 가로/세로 중앙에 뷰 배치

 

저작자표시 변경금지 (새창열림)

'모바일프로그래밍' 카테고리의 다른 글

[모바일 프로그래밍] 9. Event  (3) 2023.11.09
[모바일 프로그래밍] 8. Drawable  (0) 2023.11.09
[모바일 프로그래밍] 5. View  (0) 2023.11.08
[모바일 프로그래밍] 4. 버튼 기능  (0) 2023.11.08
[모바일 프로그래밍] 3. 안드로이드 스튜디오 설치 및 실행  (0) 2023.09.15
  1. Layout
  2.  
  3. Layout 5가지
  4. Constraint Layout(제약 레이아웃)
  5.  
  6. 제약 조건 만들기
  7. Linear Layout(리니어 레이아웃)
  8.  
  9. gravity
  10. Weight
  11. Relative Layout
'모바일프로그래밍' 카테고리의 다른 글
  • [모바일 프로그래밍] 9. Event
  • [모바일 프로그래밍] 8. Drawable
  • [모바일 프로그래밍] 5. View
  • [모바일 프로그래밍] 4. 버튼 기능
파스텔코랄
파스텔코랄
Developer Blog 📜 Lots of rules and no mercy ✨
슬기로운 개발일지Developer Blog 📜 Lots of rules and no mercy ✨
파스텔코랄
슬기로운 개발일지
파스텔코랄
전체
오늘
어제
  • 스터디
    • 컴퓨터시스템구조
    • 모바일프로그래밍
    • 프로그래밍언어론
    • 운영체제
    • 컴퓨터네트워크
    • 데이터분석
    • 소프트웨어공학
    • 시스템프로그래밍

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • About

링크

공지사항

인기 글

태그

네트워크
어셈블리어
프로그래밍언어론
운영체제

최근 댓글

최근 글

hELLO· Designed By정상우.v4.6.1
파스텔코랄
[모바일 프로그래밍] 6. Layout
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.