ViewPager2+Tablayout+Fragment高度异常问题_tablayout高度异常

ViewPager2嵌套Fragment时候,本想ViewPager2的高度设定为:wrap_content自适应Fragment高度。结果是ViewPager2的高度异常,页面短的Fragment下面留有很大空白。网上有很多重写ViewPager的方法去自适应高度,这是个办法。但我就想用ViewPager2,可ViewPager2没有办法被自定义,于是stackoverflow… 解决问题: inner class PageChangeCallback : ViewPager2.OnPageChangeCallback() { //重写ViewPager2.OnPageChangeCallback()中的onPageSelected override fun onPageSelected(position: Int) { super.onPageSelected(position) //这个view是的fragment。 val view = (viewPager[0] as RecyclerView).layoutManager?.findViewByPosition(position) view?.let { updatePagerHeightForChild(view, binding.viewPager) } } } //解决viewpager2高度问题 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) if (pager.layoutParams.height != view.measuredHeight) { pager.layoutParams = (pager.layoutParams) .also { lp -> lp.height = view.measuredHeight } } } } 参考:https://stackoverflow.com/questions/58492796/viewpager2-with-differing-item-heights-and-wrap-content/58632613#58632613
你可能想看的