안드로이드 UI 구현 - Common Layout Objects 
 ㆍ작성일 2008 - 03 - 04 ( 화 ) 14 : 11 
 ㆍ추천 : 0 ㆍ조회 : 10751 
 작성 일시 : 2007 . 11 . 30 13 : 56 
 아래 의 소개 되 는 것 은 애플리케이션 에서 사용 하 게 될 공통 View Group 들 이 다 . 이 레이아웃 을 조합 하 여 화면 상 에 View 를 배치 하 고 보여 줄 수 있 다 . 
 ( 1 ) FrameLayout 
 FrameLayout 은 가장 간단 한 레이아웃 객체 다 . 이것 은 화면 상 에 예약 된 빈 공간 을 의미 하 며 , 이곳 에 사진 을 하나 보여 주 는 것 처럼 하나 의 객체 를 채워 넣 을 수 있 다 . 모든 자식 요소 들 은 화면 상단 왼쪽 에 자리 잡 게 되 며 , FrameLayout 에서 는 자식 객체 의 위치 를 조정 할 수 없 다 . 처음 자식 객체 를 하나 그리고 다음 자식 객체 가 그려질 때 다음 객체 는 처음 객체 를 덮어쓰 면서 그려진다 . 
 ( 2 ) LinearLayout 
 LinearLayout 은 어떻게 정렬 할 것 인지 지정 하 느냐 에 따라 수평 또는 수직 으로 모든 자식 요소 들 을 한 방향 으로 정렬 한다 . 모든 자식 객체 는 순서 대로 쌓이 면서 그려진다 . 만약 수평 으로 정렬 하 여 객체 를 배열 할 경우 각 객체 들 은 일렬 로 정렬 되 어 출력 되 며 세로 로 가장 긴 객체 를 기준 으로 작 은 객체 들 은 margin 과 padding 을 가지 게 된다 . 수직 으로 정렬 될 경우 에 는 객체 가 얼마나 넓 은지 에 상관없이 한 행 에 하나 의 객체 만 그려진다 . LinearLayout 은 자식 객체 들 간 의 마진 을 지정 할 수 있 고 , 오른쪽 / 가운데 / 왼쪽 정렬 을 지정 할 수 있 다 . 
 LinearLayout 은 각 자식 객체 들 의 비중 ( weight ) 을 할당 할 수 있 다 . 이 값 은 자식 들 이 자식 객체 들 이 화면 상 의 남 은 공간 에서 확장 되 어 그려질 수 있 도록 한다 . 자식 객체 는 비중 값 을 지정 할 수 있 고 , 그 비중 에 따라 남 은 공간 이 자식 객체 에 할당 된다 . 이 값 의 기본 값 은 0 이 다 . 가령 세 개 의 텍스트 박스 가 있 다고 할 때 두 개 의 비중 이 1 로 선언 되 면 , 그 두 개 는 남 은 공간 에서 똑같이 확장 될 것 이 고 남 은 하나 는 원래 의 크기 만 을 유지 하 게 된다 . 
 아래 의 두 개 의 폼 은 버튼 과 레이블 , 텍스트 박스 를 포함 하 는 LinearLayout 을 보여 주 고 있 다 . padding 을 적절 하 게 조정 하 기 위한 padding 값 을 가지 고 있 다 . 텍스트 박스 의 가로 값 은 FILL _ PARENT 이 며 , 나머지 객체 들 은 WRAP _ CONTENT 로 지정 되 어 있 고 모두 좌측 정렬 을 기본 적 으로 하 고 있 다 . 왼쪽 레이아웃 의 weight 값 은 설정 되 어 있 지 않 고 ( 0 이 기본 값 ) , 오른쪽 레이아웃 의 Comments 텍스트 박스 weight 는 1 로 설정 되 어 있 다 . 만약 에 Name 텍스트 박스 가 마찬가지 로 1 로 설정 되 어 있 다면 Name 과 Comments 텍스트 박스 는 같 은 높이 를 가지 게 될 것 이 다 . 
 Tip : 화면 에 비례 하 는 사이즈 의 레이아웃 을 생성 하 려면 fill _ parent 속성 을 가진 container 객체 를 생성 하 고 , 자식 객체 의 가로 와 세로 를 0 으로 준 다음 상대 적 인 ( relative ) 비중 ( weight ) 값 을 각 자식 에게 할당 하 면 된다 . 
 ( 3 ) TableLayout 
 TableLayout 은 하위 의 객체 들 을 행과 열 을 이용 하 여 배치 한다 . TableLayout 은 행 를 정의 하 고 있 는 TableRow 객체 들 로 구성 되 어 있 다 . TableLayout 의 컨테이너 들 은 각 행과 열 , 셀 에 대해 테두리 를 표시 하 지 않 는다 . 각 행은 0 개 이상 의 셀 로 이루어져 있 고 각 셀 은 하나 의 View 객체 를 가질 수 있 다 . 테이블 은 모든 셀 을 비워둘 수 있 으며 셀 은 HTML 에서 처럼 두 개 를 이 어 붙일 수 는 없 다 . 다음 의 이미지 는 TableLayout 의 예 이 며 , 아래 의 예 에서 도트 라인 은 편의 상 그려 넣 은 것 으로 실제로 는 보이 지 않 는다 . 
 ( 4 ) AbsoluteLayout 
 AbsoluteLayout 은 자식 객체 들 의 정확 한 x / y 좌표 를 지정 해 줄 수 있 다 . 0 , 0 은 왼쪽 상단 의 좌표 이 며 오른쪽 이나 아래쪽 으로 이동 하 려면 이 값 을 증가 시키 면 된다 . 마진 은 지원 되 지 않 고 각 객체 가 겹치 는 것 은 허용 하 지만 추천 하 지 는 않 는다 . 이것 은 다양 한 기기 화면 에서 서로 다르 게 동작 될 수 있 기 때문 에 특별 한 이유 가 있 는 한 사용 하 지 않 는 것 을 권장 한다 . 
 ( 5 ) RelativeLayout 
 RelativeLayout 은 자식 객체 들 이 ID 로 명명 된 다른 객체 나 부모 객체 에 대해 상대 적 인 위치 를 지정 할 수 있 다 . 두 개 의 객체 를 오른쪽 테두리 를 이용 하 여 정렬 한다던가 , 하나 를 다른 쪽 의 아래 에 위치 시킨 다던가 , 또는 화면 정 가운데 로 맞출 수 있 다 . 객체 들 은 주어진 순서 에 의해서 그려지 며 첫 번 째 객체 는 화면 중앙 에 위치 하 게 되 고 다른 객체 들 은 가운데 에 위치 한 객체 에 따라 상대 적 인 위치 에 정렬 이 된다 . 만약 에 XML 을 이용 하 여 이 레이아웃 을 만든다면 , 객체 를 참조 하 기 전 에 반드시 이 XML 파일 에 기술 해야 한다 . 
 다음 은 RelativeLayout 의 예제 다 . 아래 의 그림 에서 객체 의 윤곽 은 실제로 는 보이 지 않 는 것 이 며 참고 용 으로 그렸 다 . 
 이 다이어그램 은 화면 객체 들 의 클래스 이름 과 특성 을 보여 주 고 있 다 . 어떤 특성 들 은 객체 에서 바로 제공 되 고 어떤 것 들 은 LayoutParams 멤버 에 의해 제공 된다 . RelativeLayout 파라 메터 는 width , height , below , alignTop , toLeft , padding , marginLeft 이 다 . 이 파라 메터 가 지원 하 는 값 중 의 일부 는 다른 자식 객체 들 에 대해 상대 적 이 다 . 
 ( 6 ) 주요 View Group 요약 
 a . AbsoluteLayout : 자식 객체 들 이 부모 객체 내부 에서 의 상대 적 인 위치 를 픽셀 단위 와 같이 정확 하 게 지정 할 수 있 다 . 
 b . FrameLayout : 화면 상 에 하나 의 객체 를 보여 주 는 것 과 같 은 동작 을 한다 . 
 c . Gallery : bound list 로부터 수평 방향 으로 스크롤 되 면서 이미지 를 보여준다 . 
 d . GridView : m 개 의 행과 n 개 의 열 에 대해 스크롤 되 는 그리드 를 보여준다 . 
 e . LinearLayout : 자식 객체 들 을 하나 의 수평 또는 수직 행 으로 배치 시킨다 . 윈도우 가 화면 의 크기 를 넘어가 면 스크롤바 를 생성 한다 . 
 f . ListView : 하나 의 열 로 구성 된 리스트 를 보여준다 . 
 g . PopupList : freestanding popup 리스트 를 테두리 와 함께 보여준다 . 
 h . RelativeLayout : 자식 객체 들 을 서로 상대 적 인 위치 로 배치 할 수 있 다 . 
 i . ScrollView : 수직 으로 스크롤 되 는 객체 들 을 보여준다 . 
 j . Spinner : 하나 의 행 으로 구성 된 텍스트 박스 의 , bound list 로부터 하나 의 아이템 만 보여준다 . 
 k . SufaceView : Z 축 을 제공 하 여 레이어 처럼 사용 할 수 있 는 View 객체 . 
 l . TabHost : Tab 을 제공 . 
 m . TableLayout : 불 규칙 한 행과 열 을 가진 표 를 나타내 는 레이아웃 이 다 . 각 셀 은 위젯 을 가지 고 , 각 행 들 은 가장 큰 열 의 크기 로 리사 이징 된다 . 셀 의 테두리 는 보여 지 지 않 는다 . 
 n . ViewFlipper : 하나 의 행 으로 이루어진 텍스트 박스 에서 하나 의 아이템 을 하나 씩 보여준다 . 슬라이드 처럼 특정 시간 간격 에 맞추 어 아이템 을 바꿀 수 있 다 . 
 o . ViewSwitcher : ViewFlipper 와 동일 
 오 . . 호 . . 
 라 . . 그렇 구나 . . 
 Swing 의 JComponent 와 LayoutManager 랑 비교 하 면서 생각 하 고 있 는데 . .. 아직 코딩 을 안 해 봐서 그런지 감 이 전혀 잡히 질 않 네요 . .. ㅜㅜ 
 2009 - 12 - 08 08 : 23 
 복잡 하 군요 . .. 
 Mr . KKang 
 와우 좋 은 정보 감사 합니다 ^_^ 
 16 	 안드로이드 소개 2008 - 03 - 04 9133 
 15 	 안드로이드 애플리케이션 구조 2008 - 03 - 04 12446 
 13 	 10 tips for developers to become productive 2008 - 04 - 26 6166 
 10 	 안드로이드 UI 구현 - Listening for UI Notifications 2008 - 03 - 04 5081 
 8 	 안드로이드 UI 구현 - XML 을 이용 한 화면 디자인 . . 2008 - 03 - 04 11308 
 5 	 안드로이드 UI 구현 - 화면 구성 요소 들 의 계층 구조 . . 2008 - 03 - 04 13460