Не срабатывает метод ViewPager2.registerOnPageChangeCallback()
У меня есть Pager основанный на фрагментах, т.к. всего 3 страницы. И при скроле у меня разная высота контента и Pager ее обрезает. Решил обойти это сделав метод который активируется по идее, когда сменилась страница, но не срабатывает по какой то причине(Без метода код с высотой работает)?! Надеюсь на вашу помощь!
Код MainActivity.kt:
slider.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
val view = slider
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 (slider.layoutParams.height != view.measuredHeight) {
// ParentViewGroup is, for example, LinearLayout
// ... or whatever the parent of the ViewPager2 is
slider.layoutParams = (slider.layoutParams as LinearLayout.LayoutParams)
.also { lp -> lp.height = view.measuredHeight }
}
}
}
})
Источник: Stack Overflow на русском