RelativeLayout에서 width에 값을 퍼센티지로 줄수있을까요?

조회수 9264회

발생하는 문제 및 실행환경

안드로이드에서 아래 이미지 같은 로그인 레이아웃을 디자인하고 있는데요. 1 제가 이렇게 만들 수는 있어요. 있는데 문제는 저기 그림에서 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 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    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으로 줘도 똑같은 결과를 얻을 수 있습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)