이 포스트는 개인적인 공부를 위해 정리하는 포스트입니다.
내용은 모두 Do it 안드로이드 앱 프로그래밍에서 나온 것입니다.
가장 많이 사용되는 레이아웃 : 기본 레이아웃
기본 레이아웃의 대표 속성들
속성 | 설명 |
채우기 : fill model | 뷰를 부모뷰의 여유 공간에 어떻게 채울 것인지를 설정합니다. |
방향 : orientation | 뷰를 추가하는 방향 설정 |
정렬 방향 : gravity | 뷰의 정렬 방향을 설정 |
여유 공간 : padding | 뷰의 여유 공간을 설정 |
공간가중치 : weight | 뷰가 차지하는 공간의 가중치 값을 설정 |
안드로이드에서 제공되는 기본 레이아웃 종류
레이아웃 이름 | 설명 |
리니어 레이아웃 | 박스 모델 사각형 영역으로 화면 구성 |
상대 레이아웃 | 규칙 기반 모델 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면 구성 |
프레임 레이아웃 | 하나의 뷰만 보여줌 여러 개의 뷰 중첩 가능 |
테이블 레이아웃 | 격자 모델 HTML에서 많이 사용하는 정렬방식과 유사 |
스크롤 레이아웃 | 스크롤 가능 |
레이아웃들을 사용할 때는 항상
android:layout_width
android:layout_height
속성이 들어가야 한다. 이 두 속성이 없으면 오류가 발생한다.
[리니어 레이아웃]
-뷰가 놓이는 방향 설정하기
<LinearLayout> 태그의 android:orientation="vertical" 속성 변경 vertical/horizontal
**match_parent로 인해 여유공간이 없어질 경우에는 view들이 겹쳐서 보이게 되므로 조심한다.
if 초기 실행에 보이는 액티비티를 변경하고 싶다면
AndroidManifest.xml 파일의 <activity> 태그의 android:name 속성 값을 바꾸어준다.
앞서 살펴본 setContentView() 메소드에는 .xml파일이 인자로 들어갔었다.
이 메소드는 파라미터로 리니어 레이아웃으로 만든 객체를 넣을 수도 있다.
xml 레이아웃의 대부분을 자바 코드로 할 수 있다.
뷰 객체를 코드에서 만들 때 뷰의 생성자에는 항상 Context 객체가 전달되어야 하는데
액티비티는 Context를 상속하므로 액티비티 클래스 안에서는 this를 Context 객체로 사용할 수 있다.
자바 코드상에서 뷰를 배치할 땐 LayoutParams 객체를 사용 이 때 채우기 속성을 지정해야 한다.
뷰그룹에 뷰를 추가하기 위해선 addView 메소드를 호출한다.
-정렬 방향 설정하기
정렬 속성 | 설명 |
layout_gravity | 부모 컨테이너의 여유 공간에 뷰가 모두 채워지지 않아 여유 공간 안에서 뷰 정렬 |
gravity | 뷰에서 화면에 표시하는 내용물을 정렬할 때 |
gravity 속성의 경우 중복도 가능하며 | 연산자 앞과 뒤에 padding 띄어쓰기 없이 붙여서 쓰면 된다.
여유 공간이 없다면 gravity 속성 지정이 의미가 없다.
gravity의 속성 값에는
top, bottom, left, right, center_vertical, center_horizontal, fill_vertical, fill_horizontal, center, clip_vertical, clip_horizontal 이 있다.
텍스트와 버튼의 높이가 잘 맞지 않는 경우
baselineAligned 속성을 사용한다.
<LinearLayout> 태그에 android:baselineAligned="true"를 지정하면 레이아웃에 추가되는 뷰들이
가지는 글자의 아랫줄에 맞추어진다.
xml 파일에서 android:textColor 는 글자 색을 지정할 수 있고, android:textSize 는 글자 크기를 지정할 수 있다.
-여유 공간 설정하기
버튼이나 텍스트 같이 화면을 구성하는 뷰를 위젯이라고 하는데 위젯이 부모 컨테이너로부터 할당된 공간을 차지한 것을
위젯 셀이라고 하며 이 안에서 여백은 layout_margin 속성을 이용한다. layout_marginTop, layout_marginRight
한편 뷰 안에서의 내용물과의 여백은 padding 속성을 이용한다. paddingTop, paddingRight
첫 번째와 세 번째는 padding 이용
두 번째는 layout_margin 이용
-공간가중치 설정하기
layout_weight 속성을 통해 가중치를 지정. 예를 들어 2개의 뷰 각각에 1, 2의 가중치를 준다고 하면
화면에서 1/3, 2/3을 차지하게 되는 것이다.
여러 layout의 중첩이 가능하다.
[상대 레이아웃]
부모 컨테이너나 다른 뷰와의 상대적인 위치를 이용해 뷰의 위치를 결정. 이때 이미 추가되어있는 뷰의 id를 얻을 필요가 있음.
안드로이드에서 입력상자 기능을 하는 것은 EditText로 xml에서 태그를 이용해 정의한다.
'안드로이드 Android' 카테고리의 다른 글
01 기본 위젯과 레이아웃 - 3 (0) | 2013.11.18 |
---|---|
01 기본 위젯과 레이아웃 - 2 (0) | 2013.11.07 |
05 안드로이드 마켓의 이해와 앱의 판매 ~ 01 기본 위젯과 레이아웃 (0) | 2013.11.05 |
03 첫 번째 애플리케이션 ~ 04 안드로이드 프로젝트와 개발 도구 (0) | 2013.11.05 |
03 첫 번째 애플리케이션 (0) | 2013.11.05 |