ViewPager2 wrap_content 설정하기

James_·2022년 3월 24일
0

안드로이드에서 viewpager2 + fragmentStateAdapter 조합으로 사용할 때 wrap_content으로 하면 fragment 부분이 보이지 않는 경우가 있는데 해당 화면을 보여주기 위해서
뷰페이저 apply에 해당 부분을 넣어준다.

            registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)
                    // viewPager
                    val view = (binding.inspectVp2Inspect[0] as RecyclerView).layoutManager?.findViewByPosition(position)
                    view?.post {
                        val wMeasureSpec =
                            View.MeasureSpec.makeMeasureSpec(view.width, View.MeasureSpec.EXACTLY)
                        val hMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
                        view.measure(wMeasureSpec, hMeasureSpec)
                        if (binding.inspectVp2Inspect.layoutParams.height != view.measuredHeight) {
                            binding.inspectVp2Inspect.layoutParams = (binding.inspectVp2Inspect.layoutParams).also { lp ->
                                lp.height = view.measuredHeight
                            }
                        }
                    }
                }
            })
profile
Android 개발자

0개의 댓글