각 페이지의 높이가 다른 화면을 ViewPager2 에서 표시해야하는 경우가 있다. wrap_content 가 따로 없기 때문에 이런 식으로 페이지가 변경되면 높이를 변경해주는 작업을 해줘야한다.
viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) val view = (viewPager[0] as RecyclerView).layoutManager?.findViewByPosition(position) view?.post { val wMeasureSpec = MeasureSpec.makeMeasureSpec(view.width, MeasureSpec.EXACTLY) val hMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) view.measure(wMeasureSpec, hMeasureSpec) if (viewPager.layoutParams.height != view.measuredHeight) { viewPager.layoutParams = (viewPager.layoutParams).also { lp -> lp.height = view.measuredHeight } } } } })