안드로이드 개발자의 창고
[42일차 Android] XML을 이용한 View 객체 생성 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 XML을 이용한 View 객체 생성
Layout Inflater
- 지금까지 예제는 layout 폴더에 있는 xml 파일을 통해 화면을 구성하였다.
- 이는 Activity가 처음 나타날 때의 모습을 설정하게 된다.
- 만약 실행 중 View를 만들어 추가할 경우에는 코드를 통해 View를 만들어 추가해줘야 한다.
- LayoutInflater를 사용하면 xml로 만든 화면 모양을 View 객체로 만들어 사용할 수 있다.
예제 코드
activity_main.xml
<?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:id="@+id/mainContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" />
MainActivity.kt
class MainActivity : AppCompatActivity() {
lateinit var activityMainBinding: ActivityMainBinding
lateinit var layoutSub3Binding: LayoutSub3Binding
lateinit var layoutSub4Binding: LayoutSub4Binding
lateinit var layoutSub1Binding: LayoutSub1Binding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(activityMainBinding.root)
// LayoutInflater로 View 생성
val sub1 = layoutInflater.inflate(R.layout.layout_sub1, null)
val sub2 = layoutInflater.inflate(R.layout.layout_sub2, null)
// ViewBinding 생성
layoutSub3Binding = LayoutSub3Binding.inflate(layoutInflater)
layoutSub4Binding = LayoutSub4Binding.inflate(layoutInflater)
// 생성한 View들을 레이아웃에 추가
activityMainBinding.mainContainer.addView(sub1)
activityMainBinding.mainContainer.addView(sub2)
activityMainBinding.mainContainer.addView(layoutSub3Binding.root)
activityMainBinding.mainContainer.addView(layoutSub4Binding.root)
// View 객체를 ViewBinding 객체에 설정
// inflate : 새로운 View를 생성
// bind : 기존에 있는 View를 가지고 설정
layoutSub1Binding = LayoutSub1Binding.bind(sub1)
layoutSub1Binding.run {
buttonSub1.setOnClickListener {
textViewSub1.text = "sub1 버튼을 눌렀습니다."
}
}
layoutSub3Binding.run{
buttonSub3.setOnClickListener {
textViewSub3.text = "sub3 버튼을 눌렀습니다"
}
}
}
}
- LayoutInflater로 View 생성
- layoutInflater.inflate()를 이용하여 View를 생성한다.
- MainActivity에 추가하기 위해 addView()를 사용하여 View를 추가한다.
- ViewBinding 생성
- ViewBinding을 이용하여 View를 생성한다.
- MainActivity에 추가하기 위해 addView()를 사용하여 View를 추가한다.
- root를 이용해 연결된 레이아웃 파일에서 가장 바깥쪽 뷰를 반환받아 추가한다.
'Computer > Android' 카테고리의 다른 글
[43일차 Android] Application Class (0) | 2023.07.06 |
---|---|
[42일차 Android] Code를 이용한 View 생성 (0) | 2023.07.06 |
[42일차 Android] DrawerLayout (0) | 2023.07.06 |
[41일차 Android] TabLayout(ViewPager2과 TabLayout 연동) (0) | 2023.07.04 |
[41일차 Android] AppBarLayout (0) | 2023.07.01 |