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

조회수 14613회

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

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

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

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

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

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

(ಠ_ಠ)
(ಠ‿ಠ)