다오의 개발일지

레이아웃 본문

모바일/안드로이드

레이아웃

다오__ 2025. 2. 27. 17:13

ViewGroup

- 다양한 View 에 대한 그룹 관리를 수행하고 스마트폰 화면에 어떻게 보여지는지를 결정

- 계층적 관리 구조를 제공

- 그릇에 해당되는 위젯과 View를 모아서 관리할 수 있는 쟁반 역할

 

속성 기능
layout_width 너비를 조정
match_parent : View가 위치한 상위 레이아웃의 크기에 맞춰 최대한의 크기로 출력 (그릇의 크기에 맞춤)
wrap_content : View가 출력하는 내용물의 크기에 맞춰 최소한의 크기로 출력 (내부(text 같은)의 크기에 맞춤)
layout_height 높이를 조정
높이를 조정하는 것 제외 위의 width 와 같다
layout_margin View와 형제 View 사이의 간격을 지종
View가 레이아웃에 독립적으로 있을 경우 부모 View 사이의 간격으로 설정 padding과 구분을 이해해야한다.

margin은 바깥 여백, padding은 안쪽 여백

 

LinearLayout

- 내부 구성요소를 '선형적'으로 배치하는 ViewGroup

속성 기능
orientation 레이아웃 내부에 포함된 View들을 배치하는 '방향'을 지정
vertical은 수직 / horizontal은 수평
기본값은 수평이다.
baselineAligned TextView 아래쪽을 기준으로 텍스트 뷰들을 정렬
View들이 수평으로 있어야 속성이 적용됨
기본값은 true이며 자동적으로 정렬됨
gravity View의 안쪽에 배치되는 TextView, ImageView와 같은 내용물의 정렬방식을 결정
그릇 내부에서 출력되는 위치를 결정한다. 총 9개의 방향을 배치할 수 있다.
기준은 좌측상단이다. 
center_horizontal : 수평방향으로 가운데 배치
center_vertical : 수직방향으로 가운데 배치
center : center-horizontal | center_vertical : 정중앙 배치
fill

layout_weight 상위 레이아웃의 영역에서 내부 레이아웃이나 위젯의 영역 할당비율을 지정
1:1:2 비율
<TextView layout_wegiht="1"/>
이 속성은 width, height보다 우선순위에 있어, 위 속성들을 무시한다.

 

RelativeLayout

- View들 사이의 상대적인 관계를 이용하여 View의 위치를 지정하고 배치하는 레이아웃

- 먼저 속성에 다른 '누구'를 지칭하기 위한 식별자를 R.java파일에 등록 되어있어야 한다.

- View의 기본위치는 부모 레이아웃의 좌측 상단으로 기본 결정됨

 

문제점

- 상대적인 위치를 결정하기 위해 다른 View에 종속적일 경우가 발생됨

- LinearLayout과 달리 사용자의 화면에 보이는 View의 순서와 레이아웃 XML 상의 View의 정의 순서가 다룰 수 있음

- View끼리의 관계를 정의하다 보면, 대체되는 배치를 찾기 어렵거나 유지 보수에 어려움이 발생할 수 있음

  - 원래 기준이 되는 View가 삭제되거나 위치를 이동하게 되면, 종속되는 View는 위치를 결정할 수 없음

 

 

AbsoluteLayout

- 절대적인 위치 지정이 가능한 레이아웃

- 절대좌표를 지정한다, 기본값은 좌측상단에 배치된다.

layout_x

layout_y

 

FrameLayout

- 자기 View의 위치를 지정하는 배치 규칙이 따로 없고, 모든 자식 View가 FrameLayout의 좌측상단에 나타나는 레이아웃이다.

- 자식 View가 두 개 이상일 때는 추가된 순서대로 "겹쳐서" 표시

- 구성되는 순서에 따라 위로 겹쳐지는 형태를 가지기 때문에, visibility 속성을 적절히 사용해주어야한다

 

TableLayout

- 표 형태로 자식 View를 배치하는 레이아웃

- TableRow 객체 하나가 하나의 행에 해당된다. 내부는 여러개의 열로 구성되며, 하나의 열을 '셀' 이라고 부른다.

속성 기능
shrinkColumns 특정 열의 크기를 축소한다. 축소하고자 하는 열의 숫자를 입력한다. 0부터 시작
stretchColumns 특정 열의 크기를 확장한다. 확장하고자 하는 열의 숫자를 입력한다. 0부터 시작

- 그릇의 크기를 줄이는것이다.

 

레이아웃 중첩

- View로부터 파생된 모든 ViewGroup과 View를 레이아웃 안에 포함할 수 있음

- ViewGroup에 다른 View들을 중첩하여 배치할 수도 있다

- 레이아웃 중첩은 유지보수, 가독성을 향상 시킨다.

LinearLayout 내부에 View들과 TableLayout 그리고 LinearLayout도 중복 배치가능

 

 

실행 중 자바코드로 동적 속성 바꾸기

TextView 속성 변경 (MainActivity.java)

setText, setTextSize, setColor 등

 

ImageView

setColorFilter : 색상변경

 

onCreate 메서드 중

findViewById(R.id.buttonid).setOnClickListener(new View.OnClickListener){
	public void onClick(View v){
 	...변경을 위한 View 호출
    view.setXXX();
 	}

 

 

'모바일 > 안드로이드' 카테고리의 다른 글

이벤트 처리  (0) 2025.02.28
도형 및 소리 출력  (0) 2025.02.27
사용자 인터페이스를 위한 위젯  (0) 2025.02.26
문자 및 이미지 출력을 위한 위젯, 속성  (0) 2025.02.25
안드로이드 View  (0) 2025.02.24