마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼들의 위치고정에 대해 알려주세요

0 추천
안드로이드 폰은 기종마다 화면 크기가 달라서 제가 버튼을 만들어서 이클립스에서 아무리 잘 배치시켜도 폰에 들어가면 버튼 크기하고 위치가 제각각이더라구요.

버튼 위치고정 시키는것과 버튼크기가 폰에 비율에 맞게 나올수 있게 도와주세요. 참고로 중앙하고 모서리에 고정시키는건 알고 있습니다.

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="hihi

android:width="120dp" />
an드로id (360 포인트) 님이 2015년 1월 20일 질문

2개의 답변

+1 추천
weight, 가중치를 이용하면 비율로 정렬이 가능하기 떄문에

모든 기기에서 똑같이 나옵니다. 단 가로세로 비율은 다를 수 있으니 찌그러질 순 있겠죠

 

사용법

 

<LinearLayout

android:layout_width="match_parent"

android:layout_height="0px"

android:orientation="horizontal"

android:layout_weight="50"  // 해당 레이아웃의 상위에 weightSum을 100으로 준 LinearLayout Vertical이 있다고 가정.

android:weightSum="100" >

<!-- 차일드뷰의 가로정렬일 경우 height를 0px, 세로(vertical)일 경우 width를 0px로 지정 -->

 

해당 레이아웃 안에 차일드 뷰를 만들때

width는 0px로 지정 후 weight를 통해 비율로 지정해준다는 거고

height는 match_parent로, 즉 부모 레이아웃의 'weight'값만큼 알아서 맞추겠다는 겁니다.

 

 

<Button

android:layout_width="0px"

android:layout_height="match_parent"

android:layout_weight="30" />

 

 

weight가 핵심. 레이아웃의 weightSum(가중치의 합)를 100으로 지정했으므로 여기서 30은 해당 차일드뷰의 가로 길이는 30%만큼 차지하겠다는 겁니다.

 

빈 공간, 즉 공백은

<Space

android:layout_width="0px"

android:layout_height="match_parent"

android:layout_weight="25" />

 

이런 식으로 스페이스를 통해 사이사이 집어넣어주시면

원하는 위치에 원하는 비율만큼 모든 기기에서 동일하게 나오는 가중치 정렬이 가능합니다.

 

이때 차일드 뷰들의 weight 합을 100으로 지정해주는 건 당연한 거겠죠?

 

더 세밀한 배치가 필요하다면 weightSum 값을 올리면 됩니다.
익명사용자 (5,930 포인트) 님이 2015년 1월 21일 답변
익명사용자님이 2015년 1월 21일 수정
0 추천
xml 상에서 weight로 배치 하거나

코드에서 layoutparam을 이용해서 동적으로 나타내주면 됩니다.
노예의집 (23,370 포인트) 님이 2015년 1월 20일 답변
어떻게 쓰는지 몰라서 그러는데 자세히 가르쳐 주실수 있을까요??
...