Notice
Recent Posts
Recent Comments
Link
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 책리뷰
- 코틀린
- pullrequest
- 인공지능
- 안드로이드
- GIT
- Kotlin
- n3문법
- 진짜일본어
- 책추천
- errorhandling
- Android
- KotlinInAction
- PR
- github
- androidstudio
- blog
- rxjava
- 진짜학습지
- 학습지
- ai
- CustomTab
- suspend
- 일본어기초
- 진짜학습지후기
- coroutine
- jlpt
- 일본어문법
- webflux
- posting
Archives
코딩하는 개굴이
[안드로이드] Android LayoutInflater 본문
반응형
Android LayoutInflater
LayoutInflater 란?
- 안드로이드에서 View를 만드는 방법 중 하나
- xml에 정의된 Resource 를 View 객체로 반환해 주는 역할을 한다.
- xml 에 미리 정해둔 틀을 실제 메모리에 올려주는 역할을 한다.
- Inflate는 부풀리다라는 뜻으로 만들어둔 반죽을 빵처럼 부풀려 실제 식탁에 올려주는 역할로 묘사할 수 있다.
- Activity 를 만들면 onCreate 에 추가되는 setContentView 메서드와 유사한 역할
- xml 레이아웃 파일에 대한 뷰를 생성할 때 LayoutInflater 를 이용해야 한다.
- LayoutInflater 객체의 inflate 메서드를 이용해 새로운 뷰를 생성할 수 있다.
- inflate(xml파일, 만든 뷰를 넣을 부모 layout/container, 바로 inflate 할지의 여부)
- root를 지정하지 않을 경우, xml 상의 최상위 뷰의 xml layout 설정들은 무시된다.
LayoutInflater 생성하는 3가지 방법
val inflater : LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
- context 에서 LayoutInflater 를 가져온다.
val inflater : LayoutInflater = getLayoutInflater()
- activity 에서 LayoutInflater 를 얻어온다. (Activity 는 자신의 window의 LayoutInflater 를 사용)
val inflater : LayoutInflater = LayoutInflater.from(context)
- LayoutInflater 에 static 으로 정의되어있는 LayoutInflater.from()을 이용해 LayoutInflater 를 만든다.
- 내부적으로 context에서 LayoutInflater 를 가져온다. (1번 처럼)
LayoutInflater 사용 시 주의사항
- inflate() 메서드로 layout을 inflate 한 경우, 해당 xml의 land, port layout을 자동으로 참조하게 된다.
- inflate() 된 view 의 child view는 inflate 된 view.findViewById로 찾아야 한다.
- inflate() 된 view의 layoutParams 속성은 실제 layout 에서 match_parent 라도, wrap_content 로 강제로 변경된다. (inflate 된 view는 parent 가 없어지기 때문에 강제로 wrap_content 시킨다.)
- inflate 된 뷰에서 다시 layout inflater 를 사용할 경우, 기존의 findViewById와 event 설정들이 모두 사라진다.
참고 링크
반응형
'안드로이드' 카테고리의 다른 글
jadx-gui 맥에서 설치하기 (0) | 2021.02.21 |
---|---|
Context란? (0) | 2021.02.21 |
Retrofit 과 Volley 에 대하여 (0) | 2021.02.21 |
CI / CD (0) | 2021.02.21 |
[안드로이드] 디자인 패턴 겉핥기 (MVC, MVP, MVVM) (0) | 2020.11.05 |
Comments