#android #android-viewpager2
#Android #android-viewpager2
Вопрос:
Я использую ViewPager2
для отображения элемента адаптера 3 .. и каждый элемент имеет разный макет. таким образом, высота viwepager2
должна быть изменена при изменении вкладки viewpager2
.
Пожалуйста, предложите решение для Viewpager2
.
Ответ №1:
Я достиг чего-то подобного с помощью
private fun updatePagerHeightForChild(view: View, pager: ViewPager2) {
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)
pager.layoutParams = (pager.layoutParams).also { lp -> lp.height = view.measuredHeight }
pager.invalidate()
}
}
получите текущую страницу view
, используя приведенный ниже фрагмент:
viewPager2.setPageTransformer { page, position ->
updatePagerHeightForChild(page, viewPager2)
}
Комментарии:
1. Спасибо за решение @Blackbelt. это работает для меня .. позвольте мне просто отредактировать несколько вещей в вашем ответе.
2. Спасибо за это решение .. настройка API для каждой небольшой функциональности .. фреймворк Android немного сломан, если вы посмотрите на него
3. Попробуйте много решений, и только это работает для меня. Большое вам спасибо!