본문 바로가기

Study/Programming

안드로이드 레이아웃(layout)!



좋은하루


안녕하세요 꼬로미입니당


전 포스팅 뷰(View)에 이어서 오늘은 안드로이드 레이아웃에 대해 포스팅합니다




위의 사진처럼 레이아웃 종류는 여러가지가 있지요~

레이아웃 각각에 대해서 살짝 알아보는 시간을 가져봤어요ㅎㅎㅎ






레이아웃(layout)

절대적인 화면 위치 지정보다 상대적으로 뷰를 배치하는 것이 바람직하여

안드로이드에서는 레이아웃 클래스를 사용해 뷰들을 배치합니다

 


레이아웃 클래스

구 분

설 명

LinearLayout

자식들을 수직이나 수평으로 배치

TableLayou

자식들을 테이블 형태로 배치

GridLayoutt

자식들을 바둑판 모양으로 배치

RelativeLayout

자식들을 부모나 다른 자식에 상대적으로 배치

TabLayout

탭을 이용해 겹쳐진 자식 중 하나를 선택

AbsoluteLayout

절대 위치로 배치

FrameLayout

모든 자식들을 좌측 상단에 겹치게 배치

 


레이아웃 속성 값들



레이아웃 그래비티 속성









선형 레이아웃(linear layout)

기본적인 배치 관리자,


선형 레이아웃 속성

setOrientation(int) : 수평이나 수직으로 배치가능

setGravity(int) : x, y축 상 자식을 어떻게 배치할 것인지 지정

setBaselineAligned(boolean) : false로 설정되면 자식뷰들의 기준선을 정렬하지 않음,

                                                         true시 자식들의 하단을 정렬






선형 레이아웃으로 수평배치한 버튼들과 수직배치한 버튼들ㅎㅎ




선형레이아웃의 orientation 값으로 horizontal으로 수평으로 배치된 것을 볼 수 있어요






가중치

자식 뷰의 중요도를 나타냄

자식 뷰들이 가중치가 1,2,3이면 남은 공간의 1/6 , 2/6, 3/6을 각 각 할당 받음

0으로 설정된 뷰는 더 이상 확대되지 않고 남은 뷰들의 가중치 값을 비교해 크기가 계산 됨

 







패딩

뷰의 경계와 뷰의 내용물 사이 간격

paddingBottom, paddingTop, paddingLeft, paddingRight에 값을 별도로 설정이 가능

 

마진

자식 뷰 주위의 여백

layout_maginBottom, layout_maginTop, layout_maginLeft, layout_maginRight

 



프레임 레이아웃

여러 자식 뷰들을 겹쳐서 배치

가시성(visibility)true로 설정해 순간에 하나의 뷰만 표시하려고 할 때 사용

 


테이블 레이아웃

자식뷰들을 테이블 형태로 배치

<TableRow> </TableRow>로 행을 나눔

* 각 행마다 길이가 다르면 가장 긴 행의 길이가 테이블의 폭이 됨

* 모든 셀들의 너비가 자동으로 결정, 높이 지정가능

* 버튼같은 일반적인 뷰도 하나의 행이 될수 있음

 


상대적 레이아웃(RelativeLayout)

자식 뷰의 위치를 부모 뷰나 다른 자식 뷰들에 상대적으로 지정하는 방법



절대적 레이아웃(AbsoluteLayout)

절대적인 좌표값을 주어서 뷰들을 배치하는 방법, 뷰의 속성에 좌표값을 지정해줌

이용하기 쉬운 방법 이지만 크기가 제각각인 안드로이드기반에서 활용 효율이 떨어져 많이 사용되지 않음

 


코드로 레이아웃 변경

LinearLayout manager = (LinearLayout)findViewById(R.id.LayoutManager);

다운캐스팅해 id를 통해 기존객체를 참조

manager.setOrientation(LinearLayout.HORIZONTAL);

배치 방향을 수평으로 변경



읽어주셔서 감사드립니다~

도움이 되셨다면 덧글 부탁드려요ㅎㅎ!

홧팅2