안드로이드의 android:layout_weight 속성
프로그래밍/Android (Java)2015. 11. 6. 09:01
반응형
LinearLayout의 속성 중에 android:layout_weight 이라는 속성이 있는데요.
이 것을 이용하면 LinearLayout의 항목들 배치에 아주 도움이 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
<LinearLayout android:orientation= "horizontal" android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:background= "#ffffffff" android:gravity= "center|right" android:padding= "1dp" > <TextView android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/update_time" style= "@style/text_item.preference" android:layout_weight= "1" android:gravity= "right" /> <Button android:layout_width= "wrap_content" android:layout_height= "wrap_content" android:text= "@string/edit" /> </LinearLayout> |
layout_weight 란 한마디로 UI영역에서 차지하는 중요도라고 할 수 있습니다. 이 중요도 비중을 높이면 그만큼 많은 영역을 UI영역에서 차지할 수 있죠. 설정을하지 않으면 디폴트로 0으로 설정됩니다.
위의 코드에서 TextView의 layout_weight가 1이고 Button은 설정을 하지 않았습니다. 그러면 Button이 높이가 wrap_content로 설정되어 있으니까 먼저 필요한 영역을 차지한 후 나머지 영역은 모두 TextView로 채워집니다. 만약 TextView와 Button에 layout_weight를 모두 1로 두면 어떻게 될까요? 중요도가 1:1로 설정이 되니까 화면을 절반씩 나우어 가지게 됩니다. 사용하실때 3:4든 5:5든 정수값이기만하면 비율을 맞추어 줍니다.
LinearLayout을 사용하면서 화면에 꽉차는 UI를 개발할 때는 필수품이라고 할 수 있겠죠~
그런데 만약 TextView의 layout_height를 wrap_content가 아닌 fill_parent로 하면 어떻게 될까요? 음 다른 분들은 다들 알고 계신지 모르겠는데 layout_weight를 줄때는 layout_height가 wrap_content를 쓰던지 아니면 0dp를 줘야 합니다.
전 이걸 모르고 fill_parent로 지정을 했더니 속성값이 반대로 움직이더군요.ㅋ
TextView와 Button부분의 layout_height를 fill_parent로 해두고 layout_weight를 조절 했더니 양쪽이 반대로 움직이더군요. 1:9로 두고 실행시키면 9:1이 되는...
꼭 반대로 동작하지는 않을지도 모르지만 어쨋든 정상적인 동작은 기대할 수가 없으니깐 절대 꼭 wrap_content나 0dp로 하시고 사용하세요. 전 이거 잡는데 하루 걸렸습니다. 레이아웃을 너무 복잡하게 만든후에 문제를 발견해서ㅋㅋ
그리고 한가지 더, wrap_content를 지정하고 화면 비율을 나눈 경우에는 레이아웃 안쪽에 많은 항목이 있어서 크기가 커질 경우에 비율을 무시하고 내용물의 크기 많큼 레이아웃이 커집니다. 안쪽에 많은 항목이 있으면 나눈 비율보다 커질 수 도 있는거죠. 그리고 0dp를 사용한 경우에는 정확히 설정한 비율까지만 보여지게 됩니다. 나머지 항목은 가려지게 되겠죠~
[출처] 달료~ | 쏜다 (http://gunwi.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%9D%98-androidlayoutweight-%EC%86%8D%EC%84%B1)
반응형
'프로그래밍 > Android (Java)' 카테고리의 다른 글
Simple JSON Parsing Example in Android (리스트뷰, 그리드뷰 아님) (0) | 2015.11.11 |
---|---|
외부 이미지 (url) 출력하기 (0) | 2015.11.06 |
그리드뷰(gridview) 이미지에 이벤트 넣기 (0) | 2015.11.04 |
액티비티 간 String 전송 (데이터 전송) (0) | 2015.11.03 |
Android (ListView/GridView) get Result from Web Server and Paging Pagination (0) | 2015.11.03 |
댓글()