Software/Android2015. 2. 4. 16:40

◎레이아웃 :


앞서 확인햇듯이 레이아웃은 ViewGroup으로부터 파생된다. 따라서 텍스트나 버튼 등의 기본 위젯들이 차일드로 포함된다. 즉 여러 기본 위젯들이 모여서 하나의 레이아웃을 구성하고 이들이 모여 액티비티 화면이 완성된다.


◎리니어 레이아웃(Linear layout) :


Linear라는 이름 그대로 차일드 뷰를 일렬로 배치한다. 배치방법을 수평으로 일렬로 하거나 수직으로 일렬로 배치하는것을 기본으로 한다.


위는 버튼, 텍스트를 배치하는 사진이다. orientation(방향)이 horizontal(수평)으로 되어있기 때문에 뷰를 수평으로 배치한 것이다.


◈함수:

orientation : 레이아웃의 배치방향을 선택할 수 있다.

layout_width/layout_height : 레이아웃 내부의 해당 뷰의 크기를 지정한다. 수치로 크기를 정하거나 규칙으로 지정할 수 있다.


위의 사진은 텍스트 2개, 버튼 한개를 배치한 상태에서 Hello world 텍스트 뷰의 layout_width를 레이아웃의 크기에 맞추었기 때문에 옆에있던 두개 뷰가 화면 오른쪽 바깥으로 밀려난것이다. wrap_content는 뷰의 내용물의 크기에 맞춰 뷰의 크기가 정해진다.

gravity : 뷰의 내용물을 정렬한다. '|'를 이용하여 정렬조건을 조합할 수 있다.



위처럼 폭에 대해 match_parent로 뷰의 폭을 액티비티 가득히 만들고 가운데 정렬을 해보았다.

layout_gravity : gravity가 뷰의 내용물을 정렬한다면 layout_gravity는 뷰를 부모에 대해서 정렬한다. 명령의 내용은 gravity와 동일하다.

수직리니어라는 가정하에 첫번째 그림을 보자. 위와같은 수직정렬은 수직리니어에서 무시된다. 수직정렬 자체가 무시된다. 리니어레이아웃은 기본적으로 뷰를 순서대로 차곡차곡 빈틈없이 배치하는 것이기 때문에 첫째 뷰 위에 두번째 뷰가 위차할 수 없다. 다만 오른쪽 그림과 같이 수평정렬은 가능하다. 반대로 수평리니어에서는 수평정렬이 무시된다.

background

baselineAligned : 뷰가 아닌 레이아웃에 적용하는 속성으로, 수평리니어에서만 적용되며 수직리니어에서는 무시된다. 기능은 나란히 배치된 높이가 서로다른 뷰들의 수직정렬을 위로 맞출것인지 아래로 맞출것인지를 정한다.



baselineAligned 속성의 default는 true로 오른쪽 그림과 같이 아래쪽 베이스가 가지런히 정렬된다. false로 할 경우 왼쪽 그림과 같이 된다.


layout_weight : 부모의 남은 공간에 대한 차지비율을 정하는 속성으로 weight는 중요도를 의미한다. 부모안에 있는 뷰들의 모든 weight총합에 대한 비율에 따라서 남은 공간이 배분된다. default는 0이다.


위 그림은 버튼의 weight를 각각 1과 2로 지정한 것이다.


위 사진은 2번 버튼의 weight만 1로 지정한 것이다. 다른 뷰는 모두 0으로 지정되어있기 때문에 2나 3으로 설정해도 같을 것이다.


패딩/마진

레이아웃에 뷰들을 배치할때, 기본적으로 다닥다닥 붙어있다. 물론, 이들간의 간격을 조절할 수 있는데 이것이 padding과 margin이다.

layout_margin : 뷰와 부모사이의 간격을 지정. 주위에 형제 뷰가 있으면 형제 뷰와의 간격에도 적용(상하좌우 4면에 개별적으로 지정 가능)

padding : 뷰와 내용물간의 간격을 지정(상하좌우 4면에 개별적으로 지정 가능)


'Software > Android' 카테고리의 다른 글

레이아웃 중첩  (0) 2015.02.05
렐러티브 레이아웃  (0) 2015.02.05
앱의 전체적인 화면 방향의 설정과 고정  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
setContentView()  (0) 2015.01.29
Posted by 십자성군
기타/문제해결기2015. 2. 4. 15:11

R.java를 실수로 삭제했다거나, androidmanifest를 수정하다가 에러가 생겼을 때, 원인을 제거해도 여전히 에러가 뜰때가 종종 있다.


1.

Clear한 후 프로젝트를 Refresh.

빌드를 clear한 후에 프로젝트를 우클릭 후 Refresh 하고 다시 빌드한다.


2.

프로젝트의 Java Build Path에서 Android 버전을 최상위로 한다.




3.그래도 해결이 안되면

이 때는 일단 eclipse를 껏다 켜면 대부분 해결된다. 그렇지 않다면 원인해결이 되지 않은것이다.


Posted by 십자성군
Software/Android2015. 2. 4. 14:52

레이아웃의 화면방향은 

xml에서 android:orientation="vertical" 이나 "horizontal"로 설정할 수 있다.


일부의 레이아웃이 아니라 앱 자체의 화면을 가로로 하려면 AndroidManifest.xml에 설정을 추가해준다


<activity

...

...

android:screenOrientation="landscape" >




'Software > Android' 카테고리의 다른 글

렐러티브 레이아웃  (0) 2015.02.05
리니어 레이아웃과 배치  (0) 2015.02.04
위젯와 뷰그룹의 계층  (0) 2015.02.02
setContentView()  (0) 2015.01.29
짤막한 tip. 인수 생략  (0) 2015.01.29
Posted by 십자성군