1.  레이아웃 개념

레이아웃은 ViewGroup 클래스로부터 상속받으며 내부에 무엇을 담는 용도로 쓰임. 즉 레이아웃 안에 존재하는 위젯을 배치하게 해준다.
레이아웃 중에서 가장 많이 사용되는 것은 리니어레이아웃이며, 이를 선형 레이아웃이라고도 함

 

레이아웃의 대표적인 속성

 

속성 설명
orientation 레이아웃 안에 배치할 위젯의 수직 또는 수평 방향을 설정
gravity 레이아웃 안에 배치할 위젯의 정렬방향을 좌측, 우측, 중앙 등으로 설정
padding 레이아웃 안에 배치할 위젯의 여백을 설정
layout_weight 레이아웃이 전체 화면에서 차지하는 공간의 가중값을 설정
여러 개의 레이아웃이 중복될 때 주로 사용
baselineAligned 레이아웃 안에 배치할 위젯을 보기 좋게 정렬

 

 

2.  레이아웃의 종류

종류 설명
LinearLayout (선형 레이아웃) 레이아웃의 왼쪽 위부터 아래쪽 또는 오른쪽으로 차례로 배치
RelativeLayout(상대 레이아웃) 위젯 자신이 속한 레이아웃의 상하좌우 위치를 지정하여 배치하거나 
다른 위젯으로부터 상대적인 위치를 지정
TableLayout 행과 열의 개수를 지정한 테이블 형태로 위젯을 배열
GridLayout 테이블레이아웃과 비슷하지만 행 또는 열을 확장하여 다양하게 배치할 때 더 편리
FrameLayout 위젯을 왼쪽 위에 일률적으로 겹쳐서 배치하여 중복되어 보이는 효과를 낼 수 있음
여러 개의 위젯을 배치한 후 상황에 따라서 필요한 위젯을 보이는 방식을 주로 활용
리니어레이아웃만으로도 대부분의 레이아웃 형태를 구성할 수 있어 리니어레이아웃의 사용도가 가장 높음.

 


1) 리니어 레이아웃 

기본 리니어레이아웃의 형태


📍  orientation
     리니어레이아웃의 가장 기본적인 속성은 orientation이며, 값으로 vertical과 horizontal을 설정. vertical은 레이아웃 안에 포함될 위젯의 배치를 왼쪽 위부터 수직방향으로 쌓겠다는 의미이고, horizontal은 수평 방향으로 쌓겠다는 의미

 

📍 gravity와 layout_gravity 
     gravity 속성으로 레이아웃 안의 위젯을 어디에 배치할 것인지를 결정하며 값으로 left, right, center, top, bottom 등을 사용할
수 있음. 2개를 조합하여 right|bottom 처럼 사용할 수 있는데, 오른쪽 아래에 정렬한다는 의미

    gravity 속성이 자신에게 포함된 자식(주로 위젯)을 어디에 위치시킬지를 결정한다면, layout_gravity 속성은 자신의 위치를 부모(주로 레이아웃)의 어디에 위치시킬지 결정. 그래서 gravity는 레이아웃에, layout_gravity는 위젯에 주로 지정.

 

 📍 baselineAligned
      baselineAligned 속성은 크기가 다른 위젯들을 보기 좋게 정렬해주는 것으로 true와 false를 지정.
      baselineAligned 속성의 디폴트 값은 true이므로 생략해도 잘 배치되기 때문에 특별히 신경 쓰지 않아도 됨.

 


2)  중복 리니어레이아웃 형태

한 화면에 위젯을 수평과 수직으로 다양하게 배치해야 하는 경우, 리니어레이아웃 안에 리니어레이아웃을 생성하는 방식을 사용.

 

📍  layout_weight 

     리니어레이아웃을 여러 개 사용할 경우 각 레이아웃의 크기를 지정해야 함. 레이아웃을 화면 전체에 채워야 하기 때문에 dp, px 등의 단위로 지정하기 보다는 주로 전체 화면에 대한 비율(%)로 지정. 이 때 사용하는 것이 layout_weight 속성.

중첩 LinearLayout xml 파일로 구현
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_weight="1">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼1" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼2" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="#C7ECC7"
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_weight="2">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼3" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼4" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:background="#B5B5F6"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_weight="1">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼5" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="버튼6" />
    </LinearLayout>

</LinearLayout>

 

 

 

[ 내용 참고 : IT 학원 강의 ]

+ Recent posts