복습

레이아웃(Layout) - Linear, Relative, Grid, Table, Frame 본문

Android

레이아웃(Layout) - Linear, Relative, Grid, Table, Frame

ykm1256 2020. 7. 2. 14:10

레이아웃(Layout)

 : ViewGroup 클래스로부터 상속받으며 내부에 무엇을 담는 용도로 사용

 

레이아웃에서 자주 사용되는 속성

orientation : 레이아웃 안에 배치할 위젯의 수직, 수평 방향을 설정(Vertical, Horizontal)

                     Vertical
 

Horizontal

gravity : 레이아웃 안에 배치할 위젯의 위치 설정

 

layout_gravity : 자신의 위치를 부모의 어디쯤에 위치할 지를 설정

 

layout_weight : 레이아웃이 전체 화면에서 차지하는 공간의 가중 값을 설정. 여러 개의 레이아웃이 중복될 때 사용

 

baselineAligned : 레이아웃 안에 배치할 위젯들을 보기 좋게 정렬

 

LinearLayout

: 가장 기본적인 레이아웃으로 왼쪽 위부터 아래 또는 오른쪽으로 차례로 배치

 

gravity

<LinearLayout
android:gravity="right|bottom">

 

 

right|bottom을 사용하여 레이아웃 안의 오른쪽 아래에 위젯들이 위치 하였다.

 

 

 

 

layout_gravity

<LinearLayout
	android:orientation="vertical">
    <Button        
        android:text="오른쪽"
        android:layout_gravity="right"/>

    <Button       
        android:text="중앙"
        android:layout_gravity="center"/>

    <Button
        android:text="왼쪽"
        android:layout_gravity="left"/>
</LinearLayout>

 

 

vertical이므로 위에서부터 차례대로 오른쪽 중앙 왼쪽으로 배치되었다.

 

 

 

 

 

layout_weight

<LinearLayout
    android:orientation="vertical">

    <LinearLayout
        android:orientation="vertical"
        android:layout_weight="1">
        <Button
            android:text="버튼1"/>
        <Button
            android:text="버튼2"/>
    </LinearLayout>
    
    <LinearLayout
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_weight="1">
        <Button
            android:text="버튼3"/>
        <Button
            android:text="버튼4"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_weight="1">
        <Button
            android:text="버튼5"/>
        <Button
            android:text="버튼6"/>
    </LinearLayout>

</LinearLayout>

 

 

 

이 경우 처럼 중복 LinearLayout에서 layout_weight를 사용한다.

가장 외부에 큰 LinearLayout이 있고 그 안에 3개의 LinearLayout이 있다.

3개에 모두 layout_weight="1"을 주어 3개 모두 같은 비율로 화면에 출력된다.

 

 

 

 

 

 

RelativeLayout(렐러티브레이아웃)

: 레이아웃 내부에 포함된 위젯들을 상대적인 위치로 배치

 

부모(레이아웃) 위치(기준)

 

다른 위젯의 상대적인 위치 배치

위의 속성들로 위젯을 배치하며 기준이 되는 위젯의 id값을 넣어준다.

 

 

 

TableLayout(테이블레이아웃)

 - 위젯을 표 형태로 배치할 때 사용

 - <TableRow>와 함께 사용되며 <TableRow>의 개수가 행의 개수

 - 열의 개수는 <TableRow>안의 위젯 개수

 

예제

 

FrameLayout(프레임레이아웃)

 : 레이아웃 내의 위젯들이 왼쪽 상단부터 겹처서 출력되는 방식으로 주로 탭 위젯 등과 혼용해서 사용

프레임레이아웃 속성

foreground : 프레임레이아웃의 전경 이미지를 지정

foregroundGravity : 전경 이미지의 위치를 지정