화면 하단에 뷰를 정렬하는 방법
조회수 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 답변
-
제 생각에는 relative layout을 사용하셔야할 것 같네요.
만약 전체 화면을 꽉 채우고 있는 relative layout이 있다면
android:layout_alignParentBottom
을 사용하여 버튼을 화면 하단에 위치시킬 수 있습니다.만약 그래도 하단에 위치시킨 뷰가 보이지 않는다면 상단의 레이아웃이 전체 공간을 차지하고 있는 것일 겁니다. 이 경우에는 하단에 비치될 뷰를 먼저 레이아웃 상에 위치시키고, 나머지 뷰들을
android:layout_above
를 이용하여 비치하면 됩니다. 이렇게 하면 하단의 뷰가 필요한 만큼의 공간을 차지하고, 나머지 공간을 다른 뷰들이 차지하도록 만들 수 있습니다.
댓글 입력