오늘은 ViewBinding을 구현하는 방법을 마스터해 보겠습니다.
1. Dependency설정
ViewBinding을 사용하기 위해서,
app레벨의 Build.gradle에서 설정을 해 주어야 합니다.
buildFeature에 'viewBinding' 값을 'true'로 아래와 같이 설정해주면,
ViewBinding을 사용할 수 있게 됩니다.
buildFeatures { viewBinding true }
2. Activity에서 사용하기
2-1. XML파일
이젠 Activity에서 findviewById를 대신해서 사용해 보아야 겠지요.
먼저 Activity에서 사용할 xml파일을 보도록 하겠습니다.
아래와 같이 "activity_main.xml" 파일로 되어 있습니다.
2-2. setContentView
ViewBinding을 사용하면 Binding클래스에 접근할 수 있는데요.
위와같이, activity_main.xml파일이 있다면,
CamelCase화된 이름과 뒤에 Binding을 붙여서, ActivityMainBinding이라는 클래스에 접근할 수 있게 됩니다.
이 클래스에 접근하여서 inflate함수로 binding객체를 얻어오구요.
이 객체의 root값을 setContentVIew의 인자로 넘겨주면 됩니다.
이제 어떤 요소이건, mBinding을 통해서 접근할 수 있게 되었습니다.
다만 모든 요소는 camel case로 접근할 수 있습니다.
예를 들어, id를 "text_movie_title"로 잡았다고 가정해 보겠습니다.
mBinding에서는 아래와 같이, "mBinding.textMovietitle"로 접근하게 됩니다.
그럼 아래와 같이 mBInding변수로 접근해서, "textMovieTitle"의 text를 변경해 줄 수 있습니다.
mBinding.textMovieTitle.text = viewModel.movieTitle
mBinding.testButton.setOnClickListener { viewModel.testClicked() }
3. Fragment에서 Binding 사용하기
그럼 이번에는 ViewBinding을 Fragment에서 사용해 보도록 하겠습니다.
onCreateView에서 binding을 아래와 같이 초기화 해 주고요.
onViewCreated에서는 binding을 사용해 주면 됩니다.
class BlankFragment : Fragment() {
private lateinit var binding: FragmentBlankBinding
override fun onCreateView(...): View {
binding = FragmentBlankBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, ...) {
// 여기서는 이미 생성된 binding을 사용
binding.textView.text = "Hello"
}
}
4. 메뉴에 접근하기
Toolbar의 메뉴에 접근해야 할 때,
viewBinding을 사용할 경우는 어떻게 할까요?
아래와 같은 menu를 toolbar에서 사용한다고 가정해 보겠습니다.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_favorite"
android:icon="@drawable/test_check"
android:title="즐겨찾기"
app:showAsAction="always"/>
<item
android:id="@+id/action_more"
android:icon="@drawable/ic_more"
android:title="더보기"
app:showAsAction="always"/>
</menu>
이럴 때, menu까지는 viewBinding으로 접근할 수 있구요.
menu안의 아이템들에는 아래와 같이 findItem을 이용해 접근할 수 있습니다.
binding.toolbar.menu.findItem(R.id.action_favorite)
찾아서 icon을 변경하고자 한다면 아래와 같이,
setIcon함수를 사용해주면 됩니다.
binding.toolbar.menu.findItem(R.id.action_favorite)
.setIcon(R.drawable.test_icon)
'Android 개발 > Android UI' 카테고리의 다른 글
Gravity와 Layout_Gravity 의 구분법 정리 (1) | 2025.01.21 |
---|---|
안드로이드 Webp이용해 이미지 용량 줄이는 방법 (2) | 2024.11.15 |
안드로이드 Splash Screen API 적용하기 (3) | 2024.11.15 |
RadioButton과 RadioGroup에 대한 정리 #Android (0) | 2020.03.16 |
Android Dialog 구현하는 방법 #Kotlin 버전 다이얼로그 (0) | 2020.01.17 |
Android Checkbox에 Custom 이미지 사용하기 (0) | 2019.09.18 |
DialogFragment 사이즈 조정 및 타이틀 제거 (0) | 2019.08.26 |
업그레이드 된 안드로이드 개발 이미지 추가 방법 #Resource Manager (0) | 2019.07.14 |
Android 버튼 UI에 Ripple효과 넣기 (2) | 2019.06.16 |
CoordinatorLayout과 Behavior (0) | 2019.05.30 |
댓글