과목명 : 모바일 프로그래밍(Mobile programming with Android Studio)
수업일자 : 2023년 03월 31일 (금)
1. 레이아웃 (Layout)
1-1. 레이아웃의 기본적인 개념
(1) ViewGroup 클래스로부터 상속받으며 내부에 여러 가지 위젯(요소)들을 담는 용도로 사용할 수 있습니다.
- 레이아웃은 View들의 위치와 크기를 결정할 수 있습니다.
(2) 레이아웃 중에서 가장 많이 사용되는 레이아웃은 <LinearLayout>입니다.
1-2. 레이아웃에서 자주 사용되는 속성들
(1) android:orientation
- 레이아웃 내부에 배치할 위젯의 수직 또는 수평 성분을 설정할 수 있습니다.
(2) android:gravity
- 레이아웃 내부에 배치할 위젯의 정렬 방향을 좌측, 우측, 중앙으로 설정할 수 있습니다.
(3) android:padding
- 레이아웃 내부에 배치할 위젯의 여백을 설정할 수 있습니다.
(4) android:layout_weight
- 레이아웃이 전체 화면에서 차지하는 공간의 가중치 값을 설정하며, 여러 개의 레이아웃이 중복될 때 주로 사용합니다.
(5) android:baselineAligned
- 레이아웃 내부에 배치할 위젯을 보다 보기 좋게 정렬할 수 있습니다.
2. 주요 레이아웃의 종류
2-1. LinearLayout (선형 레이아웃)
(1) 왼쪽 위부터 아래쪽 또는 오른쪽으로 차례대로 배치하는 레이아웃입니다.
2-2. RelativeLayout
(1) 위젯 본인이 속한 레이아웃의 상하좌우 위치를 지정하여 배치하는 레이아웃입니다.
(2) 다른 위젯으로부터 상대적인 위치를 지정할 수 있습니다.
2-3. TableLayout
(1) 위젯을 행과 열의 개수를 지정한 테이블 형태로 배열하는 레이아웃입니다.
2-4. GridLayout
(1) TableLayout과 비슷하지만 행 또는 열을 확장하여 다양하게 배치할 때 더 편리하게 사용할 수 있는 레이아웃입니다.
2-5. FrameLayout
- 위젯들을 왼쪽 위에 일률적으로 겹쳐 배치하여 중복해서 보이는 효과를 주는 레이아웃입니다.
레이아웃 클래스 | 설명 |
LinearLayout | 자식 위젯들을 수직이나 수평으로 배치합니다. |
TableLayout | 자식 위젯들을 테이블 형태로 배치합니다. |
GridLayout | 자식 위젯들을 바둑판 형태로 배치합니다. |
RelativeLayout ConstraintLayout |
자식 위젯들을 부모나 다른 자식 위젯에 상대적으로 배치합니다. |
TabLayout | 탭을 이용해서 겹쳐진 자식 위젯 중에서 하나를 선택합니다. |
AbsoluteLayout | 절대적인 위치로 배치합니다. |
FrameLayout | 모든 자식 위젯들을 겹치게 배치합니다. |
3. 기본적인 LinearLayout의 형태
3-1. LinearLayout
(1) 안드로이드 프로젝트 초기 생성 시, activity.xml 파일을 생성합니다.
(2) activity.xml 내부에 TextView 1개가 기본적으로 생성되어 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
3-2. android:orientation 속성
(1) LinearLayout의 기본적인 속성입니다.
(2) android:orientation="vertical"
- LinearLayout 내부에 포함될 위젯들의 배치 방향을 수직으로 설정합니다.
(3) android:orientation="horizontal"
- LinearLayout 내부에 포함될 위젯들의 배치 방향을 수평으로 설정합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
~~~~ 해당 영역에 위젯들을 배치시킬 수 있습니다.~~~~
</LinearLayout>
3-3. 예시 코드 (1) - android:orientation 속성 값이 각각 "vertical", "horizontal"인 경우
(1) android:orientation="vertical"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Switch"/>
</LinearLayout>
<위젯 배치 결과>
(2) android:orientation="horizontal"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Switch"/>
</LinearLayout>
<위젯 배치 결과>
3-4. 예시 코드 (2) - android:gravity 속성 값이 "right|bottom"인 경우
- android:gravity 속성은 레이아웃 내부의 위젯을 어디에 배치할 것인지 결정하는 속성입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="right|bottom"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Switch"/>
</LinearLayout>
<위젯 배치 결과>
3-5. 예시 코드 (3) - android:layout_gravity 속성 값이 "right", "center", "left"인 경우
- android:layout_gravity 속성은 자식 위젯들이 본인의 위치를 부모 레이아웃 내부에서 어디에 위치할 것인지 결정하는 속성입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="Button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="TextView"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:text="RadioButton"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Switch"/>
</LinearLayout>
<위젯 배치 결과>
3-6. 예시 코드 (4) - android:baselineAligned 속성
- android:baselineAligned 속성은 크기가 다른 위젯들을 각각 보기 좋게 정렬하는 속성입니다.
- true(생략 가능) 또는 false 값을 줄 수 있습니다.
4. 중복되는 LinearLayout의 형태
4-1. 중복되는 LinearLayout
(1) LinearLayout 내부에 또 다른 LinearLayout을 생성하는 방식을 의미합니다.
4-2. LinearLayout의 android:layout_weight 속성
(1) LinearLayout을 여러 개 사용할 경우 각 레이아웃에 대한 가중치(Weight, 크기)를 설정할 때 사용하는 속성입니다.
(2) 주로 전체 화면에 대한 비율(%, percent)로 지정할 수 있습니다.
(3) Weight 속성 계산 방법은 아래와 같고 이해를 돕기 위해 몇 가지 예시를 추가했습니다.
4-3. 중복된 LinearLayout의 예시 코드 (1) - android:layout_weight 속성 이용하기
(1) android:layout_weight의 속성을 "match_parent" → "wrap_content"으로 변경합니다.
(2) 레이아웃마다 구분될 수 있도록 android:background 속성으로 색상을 설정해 줄 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
<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="wrap_content"
android:background="#00FF00"
android:gravity="center"
android:orientation="horizontal" >
<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="wrap_content"
android:background="#0000FF"
android:gravity="center"
android:orientation="vertical" >
<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>
<위젯 배치 결과>
4-4. 중복된 LinearLayout의 예시 코드 (2) - android:layout_weight 속성의 가중치 값을 사용해 화면을 모두 채울 수 있다.
(1) 모든 레이아웃에 android:layout_weight="1" 속성을 적용합니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<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="match_parent"
android:layout_weight="1"
android:background="#00FF00"
android:gravity="center"
android:orientation="horizontal" >
<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="match_parent"
android:layout_weight="1"
android:background="#0000FF"
android:gravity="center"
android:orientation="horizontal" >
<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>
<위젯 배치 결과>
4-5. 중복된 LinearLayout의 예시 코드 (3)
(1) 중복된 LinearLayout을 사용하여 아래와 같은 레이아웃을 구성할 수 있습니다.
(2) XML Code 작성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ff0000"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffd400"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffd400"
android:orientation="vertical">
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#000000"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#0000ff" />
</LinearLayout>
<mainActivity.java 실행 결과>
5. RelativeLayout
5-1. RelativeLayout에 존재하는 위젯의 위치 속성
(1) RelativeLayout의 상하좌우에 배치됩니다.
(2) RelativeLayout의 다른 위젯의 상대 위치에 배치됩니다.
5-2. RelativeLayout의 상하좌우에 배치시키는 속성들과 예시 코드
(1) 각 속성 값들은 true 또는 false입니다.
상세 속성 | 역할 |
android:layout_centerHorizontal | 부모 컨테이너의 수평 방향 중앙에 위치시킵니다. |
android:layout_centerVertical | 부모 컨테이너의 수직 방향 중앙에 위치시킵니다. |
android:layout_centerInParent | 부모 컨테이너의 수직 & 수평, 정중앙에 위치시킵니다. |
android:layout_alignParentTop | 부모 컨테이너의 상단 끝과 자식 View의 상단 끝을 맞춥니다. |
android:layout_alignParentBottom | 부모 컨테이너의 하단 끝과 자식 View의 하단 끝을 맞춥니다. |
android:layout_alignParentLeft | 부모 컨테이너의 왼쪽 끝과 자식 View의 왼쪽 끝을 맞춥니다. |
android:layout_alignParentRight | 부모 컨테이너의 오른쪽 끝과 자식 View의 오른쪽 끝을 맞춥니다. |
<XML 예시 코드>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="Top"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:text="Left"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="Right"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Bottom"/>
</RelativeLayout>
<위젯 배치 결과>
5-3. 다른 위젯의 상대 위치에 배치시킬 때(id 값으로 지정한 View 기준으로 설정하는)의 속성들과 예시 코드
(1) 각 속성의 값들은 다른 위젯의 id를 지정합니다.
(2) "@+id/기준 위젯의 아이디"와 같은 형식으로 사용합니다.
상세 속성 | 역할 |
android:layout_above | 지정된 View의 상단으로 위치시킵니다. |
android:layout_toLeftOf | 지정된 View의 왼쪽으로 위치시킵니다. |
android:layout_toRightOf | 지정된 View의 오른쪽으로 위치시킵니다. |
android:layout_below | 지정된 View의 하단으로 위치시킵니다. |
android:layout_alignTop | 지정된 View와 위쪽을 맞춰서 위치시킵니다. |
android:layout_alignBottom | 지정된 View와 아래쪽을 맞춰서 위치시킵니다. |
android:layout_alignLeft | 지정된 View와 왼쪽을 맞춰서 위치시킵니다. |
android:layout_alignRight | 지정된 View와 오른쪽을 맞춰서 위치시킵니다. |
android:layout_alignBaseline | 지정된 View와 텍스트 기준선을 맞춰서 위치시킵니다. |
<XML 예시 코드>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/baseBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="150dp"
android:height="150dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="기존 위젯" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/baseBtn"
android:layout_toLeftOf="@+id/baseBtn"
android:text="1번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/baseBtn"
android:layout_toLeftOf="@id/baseBtn"
android:text="2번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/baseBtn"
android:layout_toLeftOf="@id/baseBtn"
android:text="3번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/baseBtn"
android:layout_above="@id/baseBtn"
android:text="4번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/baseBtn"
android:layout_below="@id/baseBtn"
android:text="5번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@id/baseBtn"
android:layout_toRightOf="@+id/baseBtn"
android:text="6번" />
</RelativeLayout>
<위젯 배치 결과>
5-4. 다른 위젯의 상대 위치에 배치시킬 때 예시 코드
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/baseBtn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="기준 1" />
<Button
android:id="@+id/baseBtn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="기준 2"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/baseBtn2"
android:layout_toRightOf="@id/baseBtn1"
android:text="1번" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/baseBtn1"
android:text="2번"/>
</RelativeLayout>
<위젯 배치 결과>
6. TableLayout
(1) 주로 위젯을 표(Table)의 형태로 표현할 때 사용되는 레이아웃입니다.
(2) <TableRow>와 함께 사용되는데 <TableRow>개수가 행(Row)의 개수입니다.
(3) 열(Column)의 개수는 <TableRow> 내부에 포함된 위젯의 수로 결정되며, 3행 4열의 TableLayout의 형태는 아래와 같습니다.
7. GridLayout
(1) TableLayout과 비슷하지만, 위젯을 표의 형태로 배치할 때 사용하고 좀 더 직관적인 레이아웃입니다.
(2) android:layout_row, android:layout_column 속성에서 인덱스 값을 주어 n행 m열 형태의 GridLayout을 배치시킬 수 있습니다.
(3) 인덱스 속성 값은 0부터 시작하므로 n행 m열의 GridLayout의 속성 값은 android:layout_row="n - 1", android:layout_column="m - 1"입니다.
- 2행 3열의 GridLayout을 배치하고자 하는 경우
android:layout_row="1"
android:layout_column="2"
(4) Android 4.0 (Icecream Sandwich, API 14) 버전부터 지원합니다.
7-1. GridLayout 자체 레이아웃에서 자주 사용되는 속성
(1) android:rowCount
- 행의 개수를 결정하는 속성입니다.
(2) android:columnCount
- 열의 개수를 결정하는 속성입니다.
(3) android:orientation
- GridLayout의 수평 방향으로 우선 설정할지, 수직 방향으로 우선 설정할지 결정하는 속성입니다.
7-2. GridLayout 내부에 포함될 위젯에서 자주 사용되는 속성
(1) android:layout_row
- 자신이 위치할 행 번호를 결정하는 속성입니다. (인덱스 번호는 0번부터 시작합니다.)
(2) android:layout_column
- 자신이 위치할 열 번호를 결정하는 속성입니다. (인덱스 번호는 0번부터 시작합니다.)
(3) android:layout_rowSpan
- 행을 지정된 수만큼 확장하는 속성입니다.
(4) android:layout_columnSpan
- 열을 지정된 수만큼 확장하는 속성입니다.
(5) android:layout_gravity
- 주로 fill, fill_vertical, fill_horizontal 등으로 지정하며 행 또는 열을 확장할 때 위젯을 확장된 셀에 꽉 채워지는 효과를 줄 수 있는 속성입니다.
8. FrameLayout
(1) FrameLayout의 경우 단순히 레이아웃 내의 위젯을 왼쪽 상단부터 겹쳐서 출력할 수 있도록 하는 레이아웃입니다.
(2) FrameLayout 자체로 사용하기보다는 탭 위젯 등과 혼용해서 사용합니다.
8-1. FrameLayout의 속성들과 예시 코드
(1) android:foreground
- FrameLayout의 전경 이미지를 지정할 수 있는 속성입니다.
(2) android:foregroundGravity
- 전경 이미지의 위치를 지정할 수 있는 속성입니다.
(3) 예시 코드
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="@drawable/img"
android:foregroundGravity="center|fill_horizontal"
tools:context=".MainActivity">
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background"/>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
</FrameLayout>
< 위젯 배치 결과>
9. Reference
(1) Reference
- Android Studio를 활용한 안드로이드 프로그래밍 / 한빛아카데미(Hanbit Academy, Inc.)
(2) URL
https://www.hanbit.co.kr/store/books/look.php?p_code=B1212492850
- 학부에서 수강했던 전공 수업 내용을 정리하는 포스팅입니다.
- 내용 중에서 오타 또는 잘못된 내용이 있을 시 지적해 주시기 바랍니다.
댓글