안드로이드(Android) 에서 layout_gravity 와 gravity 속성차이 알아보기 |
개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2 |
안드로이드에서 화면에 컨트롤을 배치할 때 쓰이는 배치(gravity) 에 대해
알아보고 그 차이점을 샘플화면으로 구현해 볼려고 한다.
Layout_gravity : 부모 컨테이너의 여유공간을 활용하여 뷰를 배치한다.
Gravity : 뷰내에 여유공간을 활용하여 글자나 이미지등을 배치한다.
설명에서 두 속성의 차이점은 layout 의 정렬 속성이냐 뷰에서의 정렬
속성이냐 이다. Layout 에 포함되어있는 layout 이나 뷰등의 컨트롤을
정리할 때 쓰고 그런 컨트롤중 뷰를 상속받아 만든 것들의 정렬은
Gravity 속성을 쓰는 것이다.
Gravity 속성을 사용하기 위해서는 컨테이너와 컨트롤들의 layout_height
Layout_width 속성이 wrap_content 가 되야 한다. 그래야 여유 공간이 생기기
때문이다. 가로로 정렬하고 싶다면 layout_width = 'wrap_content' 가 되어
있어야 하고 세로로 정렬하고 싶다면 layout_height = 'wrap_content' 로 셋팅
되어야 한다. match_parent 는 여유공간없이 꽉 채우기 때문에 정렬을
할수 없는 것이다.
(1) layout_gravity 표현 |
샘플프로젝트를 생성하고 간단하게 LinearLayout 의 vertical 속성으로
하나 만들고 그 안에 TextView 3개를 넣는다.
참고로 xml 디자인 뷰에서 Layout 종류를 바꾸고 싶을 때 Outline 창에서
하면 된다. Outline 창에 있는 레이아웃을 선택하고 오른마우스를 누르면
Change Layout 가 나온다.
다음은 레이아웃에 포함된 3개의 TextView 의 gravity 속성을 각각 다르게
설정해 보자. 컨트롤을 하나씩 선택하고 Properties 창에서
Layout Parameter > Gravity 속성값을 변경한다. 속성값에 보면 값이
다양하게 있음을 알수 있다. 다중선택도 가능한데 left|bottom 의
형태로 표현이 된다.
각 TextView 를 left, center, right 로 표현한 그림이다.
그리고 위에서 gravity 를 표현하기 위해서 layout_width,height 값을 wrap_content 로
해야 된다고 했는데 컨트롤을 감싸고 있는 컨테이너의 layout_width,height 는
match_parent 가 되야하고 정렬을 할 컨트롤의 속성이 wrap_content 가 되야
한다는 것이다. 헷갈리지 말자.
(2) gravity 표현 |
이제 뷰 내부에 text 나 이미지의 정렬을 위해 사용하는 gravity 속성을
알아보자. 위에서 첨가한 3개의 TextView 중 2개는 지우고 하나의
TextView 속성을 부모 컨테이너의 크기에 맞게 match_parent 로 설정한다.
이것은 TextView 내부에 있는 Hello world 글자를 정렬하기 위해서 이다.
글자가 돌아다닐려면 여유공간이 필요하기 때문이다.
Gravity 속성을 설정하기 위해 properties 창으로 가보자. TextView > Gravity 에서
설정하면 되는데 클릭해보면 layout_gravity 설정할때처럼 다양한 값들이
있음을 볼수 있다. 아래 그림은 멀티선택을 한 모습인데 오른쪽 하단으로
Text 를 정렬하라는 설정이다.
Xml 은 다음과 같이 설정되어있다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) ProgressBar 진행바 구현하기 (4) | 2013.10.19 |
---|---|
안드로이드(Android) FrameLayout 이용해서 페이지 슬라이딩 구현하기 (7) | 2013.10.08 |
안드로이드(android) FrameLayout 을 이용해서 이미지 뷰 전환하기 (0) | 2013.10.06 |
안드로이드(android) 상대레이아웃(RelativeLayout) 속성값 알아보기 (0) | 2013.10.05 |
안드로이드(Android) 에서 프레임 애니메이션 만들기 (5) | 2013.09.30 |
안드로이드(Android) WIFI 와이파이 연결하기 (0) | 2013.09.27 |
안드로이드(Android) 개발시 invalid project description 에러 발생 (2) | 2013.09.23 |
안드로이드(Android) 버전업이 되면서 요구 버전 오류 해결 (0) | 2013.09.23 |