Android 개발 Tip.
- Android Inflate (안드로이드 인플레이트)
layout 안에 또 다른 layout을 넣는 방법
Inflater (인플레이터) 사용하기
현재 layout에 그때그때 다른 layout을 집어넣고 싶을 때가 있다.
예를 들면
Framelayout이나 LinearLayout 등에
정해진 화면이 아니라,
그때그때 다른 화면을 동적으로 띄우고 싶은 경우이다.
그럴 때 간단하게 inflate()를 사용하면 된다.
1. 부모 Layout 만들기
우선, 다른 뷰를 담을 기반이 될 Layout부터 필요하다.
보통 FrameLayout을 많이 사용한다.
main.xml -> FrameLayout 생성
1
2
3
4
5
6
7
8
9
10
|
<?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">
<FrameLayout android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
|
cs |
main.xml에 FrameLayout을 하나 만들어 줬다.
이 FrameLayout에 그때그때 다른 화면들을 담을 것이다.
2. 자식 Layout 만들기
담을 화면이 될 xml 파일을 만든다.
자식은 필요한 만큼 생성하면 된다.
이 자식 xml 파일들을
위에서 만든 부모 FrameLayout에 넣는 것이다.
content_1_1.xml
1
2
3
4
5
6
7
8
9
10
11
12
|
<?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">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="This is dynamic content." />
</LinearLayout>
|
cs |
TextView를 하나 넣어 줬는데
물론 원하는 대로 디자인하면 된다.
3. inflate() 사용하기 (자바 코드)
원하는 곳에 다음 3줄만 넣어주면 된다.
1
2
3
|
FrameLayout contentFrame = findViewById(R.id.content_frame); // 1. 기반이 되는 FrameLayout
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 2. inflater 생성
inflater.inflate(R.layout.content_1_1,contentFrame,true); // 3. (넣을 xml 파일명, 기반 layout 객체, true)
|
cs |
이제 if문을 쓰든 switch문을 쓰든
3번째 줄의 코드만 따로 떼서
R.layout.content_1_1
이 부분만 경우에 따라 동적으로 바꿔주면 된다.
결과 화면
main.xml의 FrameLayout 안에
content_1_1.xml이 통째로 들어 간 모습이다.
'Android 개발 > android :: Tip' 카테고리의 다른 글
[안드로이드 액티비티] 화면 고정 방법 / 화면 회전 시 activity 초기화 현상 막기 (4) | 2019.09.20 |
---|---|
[안드로이드 Toolbar] CollapsingToolbarLayout 스크롤시 툴바 가리기 속성 (0) | 2019.09.20 |
[안드로이드 Toolbar] CollapsingToolbarLayout 에 외부 폰트(font) 적용하기 (2) | 2019.09.19 |
[안드로이드 View] NavigationView 의 menu - item 의 폰트(font) 변경하기 (0) | 2019.09.19 |
[안드로이드 Toolbar] 툴바 font(폰트) 간단히 적용하는 방법 (0) | 2019.09.18 |
[안드로이드 Font] 원하는 폰트를 받아서 폰트 직접 적용하기 (0) | 2019.09.18 |
[안드로이드 액티비티] Activity에서 다른 Activity 변수 접근하기 (4) | 2019.09.16 |
[안드로이드 프래그먼트] Activity <-> Fragment 각각에서 각각의 함수/변수 접근 (1) | 2019.09.16 |
댓글