선형 레이아웃

LinearLayout은 세로 또는 가로의 단일 방향으로 모든 하위 요소를 정렬하는 뷰 그룹입니다. android:orientation 특성을 사용하여 레이아웃 방향을 지정할 수 있습니다.

참고: 성능과 툴링 지원을 개선하려면 대신 ConstraintLayout으로 레이아웃을 빌드해야 합니다.

LinearLayout의 모든 하위 요소는 순차적으로 스택되므로, 세로 목록의 경우 너비에 상관없이 한 행당 하나의 하위 요소만 있게 되며, 가로 목록의 경우 높이가 한 행 높이입니다(가장 큰 하위 요소의 높이 + 패딩). LinearLayout은 하위 요소 사이의 여백 및 각 하위 요소의 중력(오른쪽, 가운데, 왼쪽 정렬)을 유지합니다.

레이아웃 가중치

LinearLayoutandroid:layout_weight 특성으로 개별 하위 요소에 가중치를 할당하는 것을 지원합니다. 이 특성은 뷰가 화면에서 얼마나 많은 공간을 차지해야 하는지와 관련하여 뷰에 '중요한' 값을 할당합니다. 큰 가중치 값을 사용하면 상위 뷰에서 남은 공간을 모두 채우도록 확장될 수 있습니다. 하위 뷰는 가중치 값을 지정할 수 있으며, 그러면 뷰 그룹에서 남은 모든 공간이 선언된 가중치 비율에 따라 하위 요소에 할당됩니다. 기본 가중치는 0입니다.

균등 분포

각 하위 요소가 화면에서 동일한 크기의 공간을 사용하는 선형 레이아웃을 생성하려면 각 뷰에 대한 android:layout_height"0dp"로 설정하거나(세로 레이아웃의 경우) 각 뷰에 대한 android:layout_width"0dp"로 설정합니다(가로 레이아웃의 경우). 그런 다음 각 뷰에 대한 android:layout_weight"1"로 설정합니다.

비균등 분포

하위 요소가 화면에 다른 크기의 공간을 사용하는 선형 레이아웃을 생성할 수도 있습니다.

  • 세 개의 텍스트 필드가 있는데 그중 두 개가 가중치를 1로 선언하고 다른 하나에는 가중치가 지정되지 않은 경우 가중치가 지정되지 않은 세 번째 텍스트 필드는 확장되지 않고 해당 콘텐츠에 필요한 영역만 차지합니다. 반면 다른 두 텍스트 필드는 세 필드가 모두 측정된 후 남은 공간을 균등하게 채우도록 확장됩니다.
  • 세 개의 텍스트 필드가 있는데 그중 두 개가 가중치를 1로 선언하고 세 번째 필드에 가중치가 (0 대신) 2로 지정되면 다른 두 필드보다 더 중요한 것으로 선언된 것입니다. 따라서 전체 남은 공간 중 절반을 차지하며, 처음 두 개 필드가 나머지를 균등하게 나눠 갖습니다.

다음 코드 스니펫은 "메시지 전송" 액티비티에서 레이아웃 가중치가 어떻게 작동하는지 보여줍니다. To 필드, Subject, Send 버튼은 각각 필요한 높이만 차지합니다. 이 구성을 사용하면 메시지 자체가 그 액티비티 높이의 나머지 공간을 차지합니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/to" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/subject" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="top"
        android:hint="@string/message" />
    <Button
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:text="@string/send" />
</LinearLayout>

LinearLayout의 각 하위 뷰에 사용할 수 있는 특성에 대한 자세한 내용은 LinearLayout.LayoutParams를 참조하세요.