динамический расчет высоты ViewPager2 для каждого элемента

#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. Попробуйте много решений, и только это работает для меня. Большое вам спасибо!