[AndroiStudy]레이아웃에 대한 이해


Android/안드로이드 프로그래밍 2011. 4. 5. 14:42



레이아웃

* 뷰의 계층


안드로이드 응용 프로그램의 화면을 구성하는 주요 단위는 액티비티이다. 그러나 액티비티 자체는 화면에 직접적으로 보이지 않으며 액티비티 안의 뷰가 사용자를 대면하는 실체이다. 뷰 여러 개가 모여서 액티비티 하나를 구성하고 액티비티 여러 개가 모여서 응용 프로그램이 된다. 뷰는 안드로이드의 사용자 인터페이스(UI)를 구성하는 핵심 컴포넌트로서 화면상의 시각영역을 차지하며 자신의 모양을 그리고 사용자로 부터의 입력을 받아들인다. 윈도우 운영체제의 윈도우에 직접적으로 대응되는 개념은 뷰라고 할 수 있다.


뷰는 크게 다음 두 가지 종류로 분류된다.

* 위젯 (컨트롤) 직접적으로 보이며 사용자 인터페이스를 구성한다. 버튼, 텍스트 뷰, 에디트, 라디오 버튼 등이 위젯이며 흔히 컨트롤이라고도 부른다.


 

* 뷰 그룹 (레이아웃)

직접적으로 보이지 않으며 다른 뷰를 담는 컨테이너 역할을 한다. 이름 그대로 여러 개의 뷰를 유기적으로 모아 놓은 것이다. 이 부류의 클래스들을 레이아웃이라고 한다.

 

*뷰의 속성

자주 사용되는 속성들에 대해서 알아보자. 이름이 아주 직관적이어서 이름만으로도 의미를 파악하기 쉽도록 되어있다. 속성 이름은 XML 문서에도 그대로 적용된다.

[id]
뷰를 칭하는 이름을 정의한다. 코드나 XML 문서에서 이 뷰를 참조할 때 id를 사용하므로 의미를 잘 설명할 수 있는 직관적인 이름을 붙여야 한다.

@[+] id/ID

@ - id를 리소스 (R.java)에 정의하거나, 참조한다는 뜻이며 무조건 붙여야한다.
+ - ID를 새로 정의한다는 뜻인데 처음 정의할 때만 붙이고 참조할 때는 붙이지 않는다.
id - 예약어이므로 그대로 쓰면되고 '/'뒤에 원하는 이름을 작성한다.
ID - 고유한 명칭이므로 명칭 규칙에 맞아야 하며 뷰끼리 중복되어서는 안된다.

[layout_width , layout_height]

뷰의 폭과 높이를 지정한다. 뷰는 부모 뷰(또는 액티비티)안에 배치되는데 이 속성이 지정하는 만큼의 크기로 배치된다. 수평, 수직 각 방향에 대해 크기를 지정할 수 잇으며 다음 세가지 중 하나의 값을 가진다.

fill_parent : 부모의 주어진 크기를 다 채운다.
wrap_content : 내용물의 크기만큼만 채운다.
정수 크기 : 지정한 크기에 맞춘다.


[background]
뷰의 배경을 어떻게 채울 것인가를 지정한다.

[padding]
뷰와 내용물간의 간격을 지정한다.

Padding - 4방향에 동일한 여백이 적용
PaddingLeft - 왼쪽변에 대해 여백이 적용
PaddingRight - 오른쪽변에 대해 여백이 적용
PaddingTop - 윗쪽변에 대해 여백이 적용
PaddingBottom - 아랫변에 대해 여백이 적용


[visibility]
뷰의 표시 유무를 지정한다. 별다른 지정이 없으면 당연히 보이는 상태로 배치되지만, 이 속성을 지정하면 디자인 타임에 숨겨 놓았다가 런타임에 필요할 때만 보이도록 할 수도 있다.

visible - 보이는 상태
invisible - 숨겨진 상태이되 자리는 차지
gone - 숨겨지며 자리도 차지하지 않는다.


[clickable, longClickable]
마우스 클릭 이벤트를 받을 것인지, 롱클릭 이벤트를 받을 것인지를 지정
클릭은 손가락으로 뷰를 누르는 것이며 롱클릭은 누른 채로 잠시 기다리는 것이다. 진위형이므로 true 또는 false 둘 중 하나의 값을 지정한다.

[focusable]
키보드 포커스를 받을 수 있는지를 지정한다. 뷰 클래스 자체는 디폴트로 포커스를 받지 않도록 되어 있으므로 키 입력을 받으려면 이 속성을 true로 변경해야 한다.
(예외적으로, 에디트나 버튼처럼 사용자의 입력을 받아야 하는 파생 클래스는 이 속성의 디폴트가 true로 지정되어 있다.)

* 레이아웃 종류들

레이아웃은 ViewGroup으로부터 파생되는 클래스들로서 다른 뷰들을 차일드로 포함하는 뷰의 컨테이너이다.

* 리니어 레이아웃 (LinearLayout)
차일드 뷰를 일렬로 배치하는 레이아웃이다. XML 문서에 나타나는 순서대로 뷰가 차곡차곡 배치된다. 가장 단순해 보이지만 직관적이어서 사용 빈도가 높다.

* vertical - 차일드를 위에서 아래로 수직으로 배열
* horizontal - 차일드를 왼쪽에서 오른쪽으로 수평 배열

* 렐러티브 레이아웃 (RelativeLayout)
위젯과 부모와의 위치 관계 또는 위젯끼리의 관계를 지정함으로써 뷰를 배치하는 레이아웃이다.
예를 들어

<RelativeLayout>

<B android:id="@id/b" />
<A layout_above="@+id/b" />

</RelativeLayout> 

 

>> id 'b' 위에 id 'a'를 배치할 수 있다.

* 프레임 레이아웃 (FrameLayout)

형태상으로 모든 레이아웃중에 가장 단순하다. 차일드를 배치하는 규칙이 따로 없고 모든 차일드는 프레임의 좌상단에 나타난다. 차일드가 두 개 이상일때는 추가된 순서대로 겹쳐서 표시된다.

* 테이블 레이아웃 (TableLayout)
표 형식으로 차일드를 배치하는 레이아웃이다.

삼성전자 갤럭시 S20 플러스 자급제폰, 코스믹 그레이, 256GB Apple 에어팟 프로 (노이즈캔슬링 방수 블루투스 5), MWP22KH/A, 단일 색상 삼성전자 갤럭시탭S6 10.5 128G WIFI, SM-T860N, 마운틴 그레이

WRITTEN BY
ShakeJ

트랙백  0 , 댓글  0개가 달렸습니다.
secret