OPEN between Secret

대표적 레이아웃 본문

T.N.V/안드로이드

대표적 레이아웃

해가꿈꾸는달 2017. 12. 18. 21:02
반응형

위젯과 레이아웃

-> 뷰와 뷰 그룹의 역할을 구분하기 위해 뷰의 종류에 따라 다른 이름으로 부름

: 위젯(widget) - 뷰 중에서 일반적인 컨트롤의 역할을 하는 것

: 레이아웃(Layout) - 뷰그룹 중에서 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할을 하는 것

뷰와 위젯, 뷰그룹과 레이아웃

뷰 : 화면을 구성하는 일반적인 요소

위젯 : 화면을 구성하는 일반적인 요소 중에서 사용자의 눈에 보이는 컨트롤의 역할을 하는 화면 구성 요소

뷰그룹 : 뷰를 담고 있는 그릇

레이아웃 :  뷰를 담고 있는 그릇 안의 뷰들을 배치하는 역할을 하는 것을 레이아웃


ConstraintLayout(제약 레이아웃)

  - 제약 조건(Constraint) 기반 모델

  - 제약 조건을 사용해 화면을 구성하는 방법, 안드로이드 스튜디오에서 자동으로 설정하는 디폴트 레이아웃


LinearLayout(리니어 레이아웃)(horizontal, vertical)

  - 박스(BOX) 모델 

  - 한쪽 방향으로 차례대로 뷰를 추가하며 화면을 구성하는 방법, 뱡항은 필수 속성

  - 뷰가 차지할 수 있는 사각형 영역을 할당

  - 가로방향 (Horizontal)

: 왼쪽에서 오른쪽으로 쌓임 

  - 세로방향 (Vertical)

: 버튼 추가시 위쪽엣어 아래쪽으로 쌓임

  - 레이아웃 안에 레이아웃을 넣으면 복잡한 화면을 만들수 있음

ex) 로그인 화면 ? 
        horizontal로 왼쪽부터 하는데 왼쪽은 또 레이아웃 vertical로 아이디 비밀번호 후 다음 오른쪽은 로그인 버튼?

  


RelativeLayout(상대 레이아웃)

  - 규칙(Rule) 기반 모델

  - 부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법

  - 제약레이아웃(ConstraintLayout)이 사용되기 전까지 디폴트 레이아웃이었음. 

: 상대적 위치. 

ex) 부모컨테이너의 top에 붙이겠다

다른 버튼의 right에 붙이겠다.

      * Layout_above = "아이디" 를 하면 아래쪽 아이디 뷰랑 겹치지 않게 됨

* Layout_bloew = "아이디" 를 하면 위쪽 아이디 뷰랑 겹치지 않게 됨.



FrameLayout(프레임 레이아웃)

  - 싱글(Single) 모델

  - 가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법

  - 여러 개의 뷰가 들어가면 중첩하여 쌓게 됨, 가장 단순하지만 여러 개의 뷰를 중첩한 휴 각 뷰를 전환하여 보여주는 방식으로 자주 사용함

  ex) 화면이 꽉 찬 버튼 3개가 있을시. 제일 위로 올린 버튼만 보인다는것. 

-> 화면 전환의 효과가 있다?

-> Overlay(중첩) 기능 -> 뷰를 추가할수록 추가된 순서로 차곡차곡 쌓임. 

-> 가시성(Visivility) 속성.

-> 하나의 화면으로 표시되는 activity 안에서도 여러 개의 뷰가 전환되도록 만들 수 있음.

-> 프레임 레이아웃을 사용하는것보다 뷰플리퍼(ViewFlipper)와 뷰페이저(ViewPager)를 사용하셔 더 쉽게 뷰를 변경할수 있음.


TableLayout(테이블 레이아웃)

  - 격자(Grid)모델

  - 격자 모양의 배열을 사용하여 화면을 구성하는 방법

  - HTML 에서 많이 사용하는 정렬 방식과 유사하지만 많이 사용하지는 않음

  - 잘 사용하지 않음 -> 그리드뷰(GridView)라는 위젯이 거의 유사한 기능을 제공하기 때문

  - stretchColumns = tableRow 시 오른쪽에 공간이 남지 않게 다 채우고 싶을때 쓰는 것

: tableLayout 에다가 써줘야 함. 

ex) android:stretchColumns = "0,1,2" -> 0,1,2는 각 각 인덱스 번호 총 3개의 뷰가 있다는 거지.

  - Layout_column

: TableRow 태그 안에 추가하는 뷰는 순서대로 0,1,2의 인덱스가 자동 부여되지만 layout_column을 사용하면 인덱스를 지정하여 순서를 정할 수 있음

  - layout_span

: 뷰가 여러 칼럼에 걸쳐 있도록 만들기 위한 속성, 뷰가 몇개의 칼럼을 차지하게 할 것인지 지정



ScrollView - 어떤 뷰의 내용물이 그 뷰가 차지하는 화면 영역을 벗어나느 경우 간단하게 스크롤을 만들 수 있는 방법을 제공



절대 레이아웃(AbsoluteLayout)) - 뷰의 위치를 좌표 값을 직접 지정하는 방법. 그러나 안드로이드 단말은 해상도나 화면 크기가 모두 달라 절대 좌표를 사용하여 만들수가 없음.


GridLayout(GridView = 위젯)


 뷰 영역 

- Padding

: 뷰가 레이아웃에 추가 된후 뷰의 영역에서 내용물에서 뷰의 테두리까지의 공간

- Margin

: 뷰가 레이아웃에 추가 된후 뷰의 영역에서 테두리 바깥 공간

뷰의 배경색

반응형