RelativeLayout에서 width에 값을 퍼센티지로 줄수있을까요?
조회수 9294회
발생하는 문제 및 실행환경
안드로이드에서 아래 이미지 같은 로그인 레이아웃을 디자인하고 있는데요. 제가 이렇게 만들 수는 있어요. 있는데 문제는 저기 그림에서 host EditText같은걸 android:layout_width="172dp"이런식으로 하드 코딩하고 있어요... host EditText나 post EditText같은건 width의 값을 퍼센티지로 주고싶거든요.. ( 예를들어 host는 80% post 20% 같은식으로) 그렇게 하는게 가능할까요? 밑에 코드는 제가 지금 작업하는건데요 모든 해상도에서 잘 동작하진 않아요..
에러메시지(있는 경우)
소스코드
<TextView
android:id="@+id/host_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:paddingLeft="15dp"
android:paddingTop="0dp"
android:text="host"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<TextView
android:id="@+id/port_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/home"
android:layout_toRightOf="@+id/host_input"
android:paddingTop="0dp"
android:text="port"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/host_input"
android:layout_width="172dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/port_input"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_below="@id/host_label"
android:layout_marginTop="4dp"
android:layout_toRightOf="@id/host_input"
android:background="@android:drawable/editbox_background"
android:inputType="number" />
<TextView
android:id="@+id/username_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/host_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="username"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/username_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/username_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textEmailAddress" />
<TextView
android:id="@+id/password_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/username_input"
android:paddingLeft="15dp"
android:paddingTop="15dp"
android:text="password"
android:textColor="#a5d4e2"
android:textSize="25sp"
android:textStyle="normal" />
<EditText
android:id="@+id/password_input"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/password_label"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="4dp"
android:background="@android:drawable/editbox_background"
android:inputType="textPassword" />
<ImageView
android:id="@+id/home"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="false"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="15dp"
android:scaleType="fitStart"
android:src="@drawable/home" />
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/password_input"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text=" login "
android:textSize="18sp" >
</Button>
</RelativeLayout>
1 답변
-
android:layout_weight 속성이 찾고 계신것 같은데요. 이 속성은 레이아웃의 값을 퍼센티지로 줄 때 사용해요. 밑의 예제는 왼쪽 버튼의 길이를 70% 주고 오른쪽 버튼의 길이를 30% 주는 예제입니다.
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:text="left" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".70" /> <Button android:text="right" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".30" /> </LinearLayout>
weight의 값을 주면 어떤 화면에서도 똑같이 동작하고 Button을 EditText로 바꿔서 원하시는대로 수정하시면 됩니다. layout_width의 값을 0으로 하거나 뷰의 크기를 설정하지 않아야 weight가 제대로 작동합니다. 그리고 weight의 합을 1로 만들 필요는 없고 위에서 첫번째 버튼의 값을 7로 주고 두번째 버튼의 값을 3으로 줘도 똑같은 결과를 얻을 수 있습니다.
댓글 입력