화면 하단에 뷰를 정렬하는 방법


우선 제가 작성한 레이아웃 코드입니다 :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:text="@string/welcome" 
        android:id="@+id/TextView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">
    </TextView>

    <LinearLayout android:id="@+id/LinearLayout" 
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="bottom">

            <EditText android:id="@+id/EditText" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content">
            </EditText>

            <Button android:text="@string/label_submit_button" 
                android:id="@+id/Button" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </Button>

    </LinearLayout>

</LinearLayout>

이 레이아웃의 결과물은 좌측 이미지와 같은데, 오른쪽과 같이 만들고 싶습니다.

안드로이드 레이아웃 - 결과물(좌측) , 목표(우측)

물론 가장 확실한 답변은 TextView의 높이를 fill_parent로 설정하는 것이겠지만, 이렇게 할 경우, 버튼과 입력칸이 위치할 공간이 남지 않게 됩니다. 본래의 질문은 버튼과 입력칸이 고정된 높이를 갖고 하단에 위치하며, 나머지 공간을 텍스트뷰가 채우는 것에 대한 것인데, 비슷하게 horizontal Linear Layout에서도 버튼이 내용물에 맞게 크기가 고정되고, 나머지 공간을 입력칸이 채우는 것 또한 같은 맥락에서 궁금합니다.

만약 Linear Layout의 첫번째 아이템이 fill_parent로 설정이 되면, 다른 아이템을 위한 공간을 남기지 않고 정확히 부모 레이아웃을 다 채워버리는데, 첫번째 아이템이 나머지 아이템들이 필요로하는 최소한의 공간을 제외한 나머지 공간만을 채우도록 하려면 어떻게 해야할까요?

  • 2016년 06월 13일에 작성됨

조회수 412


1 답변


좋아요
0
싫어요
채택취소하기

제 생각에는 relative layout을 사용하셔야할 것 같네요.

만약 전체 화면을 꽉 채우고 있는 relative layout이 있다면 android:layout_alignParentBottom을 사용하여 버튼을 화면 하단에 위치시킬 수 있습니다.

만약 그래도 하단에 위치시킨 뷰가 보이지 않는다면 상단의 레이아웃이 전체 공간을 차지하고 있는 것일 겁니다. 이 경우에는 하단에 비치될 뷰를 먼저 레이아웃 상에 위치시키고, 나머지 뷰들을 android:layout_above를 이용하여 비치하면 됩니다. 이렇게 하면 하단의 뷰가 필요한 만큼의 공간을 차지하고, 나머지 공간을 다른 뷰들이 차지하도록 만들 수 있습니다.

  • 2016년 06월 14일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close