안드로이드의 android:layout_weight 속성
Posted on 2010. 7. 28. 10:39
Filed Under IT/안드로이드
LinearLayout의 속성 중에 android:layout_weight 이라는 속성이 있는데요.
이 것을 이용하면 LinearLayout의 항목들 배치에 아주 도움이 됩니다.
<LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#ffffffff" android:gravity="center|right" android:padding="1dp"> <TextView android:layout_width="0dp" 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_width를 0dp가 아닌 match_parent로 하면 어떻게 될까요? 음 다른 분들은 다들 알고 계신지 모르겠는데 layout_weight를 줄때는 layout_width를 wrap_content를 쓰던지 아니면 0dp를 줘야 합니다.
전 이걸 모르고 match_parent로 지정을 했더니 속성값이 반대로 움직이더군요.ㅋ
TextView와 Button부분의 layout_width를 match_parent로 해두고 layout_weight를 조절 했더니 양쪽이 반대로 움직이더군요. 1:9로 두고 실행시키면 9:1이 되는...
꼭 반대로 동작하지는 않을지도 모르지만 어쨋든 정상적인 동작은 기대할 수가 없으니깐 절대 꼭 wrap_content나 0dp로 하시고 사용하세요. 전 이거 잡는데 하루 걸렸습니다. 레이아웃을 너무 복잡하게 만든후에 문제를 발견해서ㅋㅋ
그리고 한가지 더, wrap_content를 지정하고 화면 비율을 나눈 경우에는 레이아웃 안쪽에 많은 항목이 있어서 크기가 커질 경우에 비율을 무시하고 내용물의 크기 많큼 레이아웃이 커집니다. 안쪽에 많은 항목이 있으면 나눈 비율보다 커질 수 도 있는거죠. 그리고 0dp를 사용한 경우에는 정확히 설정한 비율까지만 보여지게 됩니다. 나머지 항목은 가려지게 되겠죠~
'IT > 안드로이드' 카테고리의 다른 글
구글 맵 사용하기(Google Maps Android API v2) (0) | 2013.08.06 |
---|---|
ADT업데이트 후 java.lang.NoClassDefFoundError에러 발생하는 문제 (0) | 2012.04.06 |
안드로이드에서 static 변수의 사용 (0) | 2010.11.14 |
안드로이드 그라데이션(gradient) 각도별 생성 이미지 (0) | 2010.11.14 |