안드로이드 앱을 만들다 보면, 동적으로 View를 추가해야 할 경우가 생기는 데요.
오늘은, 이럴 때 어떻게 해야하는지 정리해 보겠습니다.
1. LayoutInflater
layout을 생성하는 것은 inflate한다고 하는데요.
참고로 inflate의 의미를 사전에서 찾아보면, 부풀리다라는 의미인데요.
View를 정의한 XML이나 Java파일대로 View를 inflate한다고 생각하면 될 것 같습니다.
inflate는 getLayoutInflater()를 이용해서 현재 context와 폰화면에 맞는,
LayoutInflater객체를 생성해서 사용해야 하는데요.
아래와 같이 layoutInflater객체를 얻어옵니다.
이제 inflate()메소드로 view를 inflate해줘야 하는데요,
먼저 view로 만들 xml을 하나 생성하고 가겠습니다.
2. inflate할 ViewXML 생성
아래와 같이 간단한 ImageView를 생성해 놓았습니다.
이제 inflate할 재료가 준비되었네요.
아래에서 부풀리기(inflate)를 해 보겠습니다.
3. Java 파일에서 inflate
이제 java파일에서 inflate()메소드를 이용하여, 위에서 만든 XML을 생성할텐데요.
코드를 적기전에 inflate()메소드의 소스코드 보고가겠습니다.
메소드의 첫번째 인자가, 부풀릴 XML소스이구요,
두번째 인자가, view의 부모 VIewGroup(이 View의 Root가 될) 을 지정해주는 것이구요,
세번째 인자는, 두번째 인자인 ViewGroup에 Attatch할 것인지를 묻는 것이군요.
여기서, false를 선택하면, ViewGroup은 그냥 LayoutParams를 전달하는 역할만을 한다고 하는군요.
(LayoutParams는 ViewGroup에 소속된 View가 어떻게 위치할 것인지를 알려주는 역활을 합니다.)
저희는 true로 하고, ViewGroup에 Attach시키겠습니다.
그럼 이제 실제로 inflate()메소드를 사용해보겠습니다.
아래와 같이 이미지뷰가 HelloWorld밑의 LinearLayout에 붙어서 잘나옵니다.
추가적으로, inflate메소드의 마지막 인자로 false를 주어서, root인 ViewGroup에 attach되지 않도록 한 후에,
수동으로 붙일수도 있는데요. 이 방법도 정리해보고 마무리 하겠습니다.
아래와 같이, root가 될 ViewGroup에 addView()메소드를 이용해서 attach를 나중에 할 수도 있습니다.
'Android 개발 > Android UI' 카테고리의 다른 글
clipChildren 으로 ViewGroup의 범위를 벗어나는 안드로이드 UI (0) | 2017.04.17 |
---|---|
안드로이드에서 카톡방식의 ViewPager + Tab 레이아웃 구현 (4) | 2017.03.13 |
ConstraintLayout 의 매력에 빠져보겠습니다 (0) | 2017.03.10 |
CollapsingToolbarLayout 으로 구현한 닫혀지는 ActionBar (0) | 2017.03.05 |
안드로이드 ActionBar에 Menu 를 구현해보자 (0) | 2017.03.02 |
Android에서 Java코드로 margin값 변경하기 (0) | 2017.02.20 |
안드로이드 Custom Toolbar 와 Theme 적용하기 (0) | 2017.01.23 |
Android에서 Time Picker 생성하기 (4) | 2017.01.15 |
Android 에서 Button 눌렸을 때 이미지 변경 방법 (0) | 2016.12.30 |
Android 라인(수평선, 수직선) 그리기 (0) | 2016.12.20 |
댓글