코딩하는 개굴이

[안드로이드] Android LayoutInflater 본문

안드로이드

[안드로이드] Android LayoutInflater

개굴이모자 2020. 11. 5. 21:56
반응형

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가지 방법

  1. val inflater : LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
    • context 에서 LayoutInflater 를 가져온다.
  2. val inflater : LayoutInflater = getLayoutInflater()
    • activity 에서 LayoutInflater 를 얻어온다. (Activity 는 자신의 window의 LayoutInflater 를 사용)
  3. val inflater : LayoutInflater = LayoutInflater.from(context)
    • LayoutInflater 에 static 으로 정의되어있는 LayoutInflater.from()을 이용해 LayoutInflater 를 만든다.
    • 내부적으로 context에서 LayoutInflater 를 가져온다. (1번 처럼)

LayoutInflater 사용 시 주의사항

  1. inflate() 메서드로 layout을 inflate 한 경우, 해당 xml의 land, port layout을 자동으로 참조하게 된다.
  2. inflate() 된 view 의 child view는 inflate 된 view.findViewById로 찾아야 한다.
  3. inflate() 된 view의 layoutParams 속성은 실제 layout 에서 match_parent 라도, wrap_content 로 강제로 변경된다. (inflate 된 view는 parent 가 없어지기 때문에 강제로 wrap_content 시킨다.)
  4. 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