꿈꾸는 엘프

 살아질 것인가. 살아갈 것인가.
이글루스 | 로그인
메뉴릿
카테고리
전체
Essay(내글)
Money(재테크)
Books(감상)
Books(추천도서)


WoodWork(목공 이야기)
Life Style(라이프스타일)


TokTokLab(모바일개발)
Transpedia(통번역)


I Want it(갖고 싶은 것들)
Like it (즐겨쓰는 모든것)
Go ! (즐겨찾기)
미분류
Profile

現톡톡랩 대표
前트랜스피디아 대표
前아침데이타시스템 과장(금융리스크 관리 컨설팅 및 개발)
前SK커뮤니케이션즈 메신저 개발팀 대리(NateOn3.7/4.0/Global Version개발)
前마켓포인트 신제품(전문가용실시간금융정보시스템) 개발 TF팀
박백민의 증권분석
Sugar Candy Mountain Lab

최근 등록된 덧글
좋은 글 감사합니다!!
by EE at 01/08
오랫동안 안드로이드 개발했지..
by 감사 at 05/08
좋은 글 잘보고 갑니다. 오래..
by ㄳㄳ at 05/07
똑같이 블로그를 하는 입장에..
by kwwon at 11/13
감사합니다. 정말 좋은자료네..
by 냐츠 at 06/26
포토로그

나의엘프의 포토로그
태그
모바일 공간 전세대책 펜션 원목 응암2구역 부동산 보유세 주택가격 개발 상태바사이즈 내이글루결산 집값 투자설명회 어플개발 테라스가든 누진세 스마트폰 안드로이드 타운하우스 사이즈 부동산대책 전세 응암1구역 티크 아이콘사이즈 메조트론 쎌바이오텍 주식
전체보기
최근 등록된 트랙백
garcinia cambogia fruit
by
garcinia cambogia
by
garcinia cambogia wikipe..
by
garcinia cambogia weight ..
by
http://helenmccrory.org/
by
buy pure garcinia cambo..
by
예비 창업자 & 소기업 사장이..
by 도서출판 부키
기본을 보면 미래가 보인다 2 -..
by 이글루스 블로거들의 살아있는..
왜 우리는 책을 읽어야 하는가? ..
by Fly, Hendrix, Fly
함정-으로 이어질 블로그링
by blogring.org
이전블로그
more...
이글루 파인더

rss

skin by 狂風
[안드로이드] 2.3 예제로 이해하는 layout 2.3.3 FrameLayout & TableLayout

2. 예제로 안드로이드 맛보기

2.1 모든 개발의 시작... Hello world
2.2 Hello world 파헤치기

2.3 예제로 이해하는 layout
 2.3.1 LinearLayout
 2.3.2 AbsoluteLayout vs RelativeLayout

 * 들어가는 말 : 어제는 일이 너무 바빴던 관계로 연재를 못했습니다. 하지만, FrameLayout과 TableLayout을 목놓아 기다린 분이 있을 것 같지는 않습니다.(^^;;) 단순하면서도 편리해서 여러모로 자주 사용되는 FrameLayout과, 매우 편리할 것 같아서 사용하지만, 은근히 불편하고 맘에 않아서 잘 안쓰게 되는(개인적 판단) TableLayout을 설명드리겠습니다. 

 2.3.3 FrameLayout & TableLayout

 FrameLayout은 다른 기능은 없이, 여러개의 Layout이나 View들을 서로 영향을 주지 않게 겹치거나, 혹은 겹쳐 두고 하나씩만 Show하도록 하는 용도로 많이 사용한다. HTML로 치면 Layer 와 비슷한 용도라고 볼 수 있다. 물론, 그냥 AbsoluteLayout이나 RelativeLayout 위에 겹쳐놔도 사용하는데 지장은 없지만, 일일히 좌표설정을 해줘야 하는 번거로움을 없애고, 자주 사용하는 용도이다보니 따로 빼 놓은 것 같다. 백문이 불여일견, 기능은 단순하기 때문에, 간단한 예제를 보고 이해하자.
[그림21]
[그림22]
[그림21]과 같이 부모를 꽉 채우는 FrameLayout 안에 TextView가 두 개 들어가 있다. 좌표에 관한 설정은 없고 크기에 대한 설정만 존재하는데, [그림22]의 결과 화면에서 보듯이, 첫번째 View부터 순서대로 차곡차고 쌓이는 방식이다. Show/Hide 할 용도가 아니라 겹쳐서 사용할 용도라면, 이런식으로 순서를 지켜줘야 한다. 탭처럼 Show/Hide하는게 아니라 이렇게 겹쳐서 사용할 일이 얼마나 있을까 싶지만, 의외로 유용하다. 물론, RelativeLayout이나 AbsoluteLayout으로도 가능하지만, 기능이 단순해서 오히려 FrameLayout을 사용하는게 편한 경우가 있다. 이런 예를 들기 위해 하나의 예제를 사용하기보다, TableLayout 예제와 합쳐진 예제를 보자.
[그림23]
[그림24]
 윗부분, 즉 TITLE부분은 FrameLayout을 활용하여, 좌측에 Back 버튼이 있음에도 불구하고 TITLE이라는 글자는, 버튼 오른쪽에 남는 부분이 아니라, 뒷 배경 전체를 차지하면서 글자는 가운데에 놓여지도록 하고 있다. 이처럼 겹쳐서 처리해야 할 경우에 FrameLayout을 활용한다.
 자, 아랫 부분의 이제 TableLayout을 보자. [그림23]의 소스를 보면,

android:stretchColumns="1" : 가장 먼저 눈에 띄는 부분이다. TableLayout에서 가장 중요한 속성이다. LinearLayout에서는 나머지 부분이 없이 차일드뷰로 꽉 채우기 위해 차일드에 layout_weight 값을 주도록 되어 있었다. 그러나 TableLayout은, 나머지 부분을 채우는 데에 활용할 열들의 인덱스 값을 부모인 TableLayout에 속성으로 주어야 하는데, 그것이 바로 android:stretchColumns 이다. 여기에는 ','로 구분하여 늘이기를 실행할 열들을 쭉 나열해 주면 된다. 여기서 인덱스는 zero-based-index이다. 예제에서는 '1'만 써 있기 때문에, 두번째 열만 늘이기를 실행하여, [그림24]의 결과 화면과 같이 내용부분이 겨자색 컬럼타이틀 부분을 제외한 나머지를 채우고 있음을 알 수 있다.
<TableRow></TableRow> : 직관적으로 알 수 있다. HTML의 <TR> 에 해당한다. 그러나, 여기서는 열 정의인 <TD>가 존재하지 않는다. 그렇기 때문에 stretchColumns라는 속성이 존재하는 것이다. 열에 대한 정의 없이, <TableRow>차일드뷰1, 차일드뷰2, .. </TableRow> 와 같이 차일드뷰들을 나열하면 각각의 뷰들이 하나의 열이 된다. 반대로, shrinkColumns라는 속성이 있는데, 이것은 stretch와 반대로 축소 가능한 열을 나열해 주는 것이다. 평소에는 지정한 크기가 되지만, 좌우에 더 큰 컬럼이 있어서 전체 길이에 모자랄 경우, 여기에 나열된 열들만 줄어들게 된다.

 
 여기서 궁금한 것이, HTML의 colspan처럼 여러 행을 하나로 합친 모습의 행을 구현하려면 어떻게 해야 할지다. stretchColumns를 잘 이용하면 불가능하지는 않지만, 결과적으로 이야기하면... 합치는 개념보다는 반대로 컬럼 내부를 LinearLayout을 이용하여 나누는 편이 편리하다. 또한, TableLayout이 Row 내부는 당연히 HTML의 TABLE처럼, 같은 열의 가로 길이를 맞춰주는 기능을 한다. 두번째 Row의 '영문회사명'이 첫번째 Row의 '회사명'보다 길기 때문에 더 긴 열의 길이에 맞춰서 '회사명'의 열 길이도 맞춰진 것을 확인할 수 있다. 이것은 LinearLayout을 행처럼 사용했을 때는 얻을 수 없는 결과이기 때문에 표 형태가 꼭 필요할 때에 유용하게 활용할 수 있다.

==================================================================================================================
이렇게 해서, 예제를 통해 화면 구성의 기본이 되는 Layout에 대해서 알아 보았습니다. 세부 자세한 속성들에 대한 정의는 안드로이드 개발자 사이트(http://developer.android.com)에 얼마든지 있으니, 그곳을 활용하도록 합시다. 세부 속성중 조심해서 사용해야 하거나, 특이한 사항, 활용팁 등에 대해서는 너무 많기 때문에 검색을 활용하시길... 제가 겪었던... 검색에도 잘 나오지 않는 징한(?) 케이스들은 시간이 나면 따로 중간중간에 팁을 올리도록 하겠습니다. 다음에는 이 레이아웃을 토대로 java소스 상에서 UI를 컨트롤 하는 것을 또한 예제를 활용하여 설명하겠습니다. 유용한 예제를 만들어야 하니, 일하면서 틈틈이 작성하자면 시간이 좀 걸릴 수도 있겠습니다.^^;;; 저도 먹고 살아아죠~
by 나의엘프 | 2010/10/19 08:51 | TokTokLab(모바일개발) | 트랙백 | 덧글(2)
트랙백 주소 : http://myelf.egloos.com/tb/2698119
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented at 2011/01/26 22:13
비공개 덧글입니다.
Commented by 나의엘프 at 2011/01/26 22:15
그건 xml도 되고 이미지 파일도 됩니다. 음.. 실례지만 이것은 너무 기본적인 질문으로 보입니다. 개발자 사이트에서 기본적인 사항들을 익히시기 바랍니다.

:         :

:

비공개 덧글


◀ 이전 페이지 다음 페이지 ▶