Android ViewPager2不会动态包装不同大小片段的高度答案 |
您所在的位置:网站首页 › 丁睛和乳胶的区别 › Android ViewPager2不会动态包装不同大小片段的高度答案 |
当片段的高度发生变化时,ViewPager2 不会刷新自己的高度(例如,如果您在内部使用 RecyclerView)。 为了解决这个问题,我们需要计算用户选择标签时的高度。这可以使用registerOnPageChangeCallback 和onPageSelected 来完成 registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) // Here we need to calculate height } })现在,我们需要计算片段的高度。为此,我们需要访问片段及其根视图。这可以在创建时使用提供给 ViewPagerAdapter 的 fragmentManager 来完成,例如这里我们使用 childFragmentManager: PagerViewAdapter(childFragmentManager, lifecycle) registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { super.onPageSelected(position) // Because the fragment might or might not be created yet, // we need to check for the size of the fragmentManager // before accessing it. if (childFragmentManager.fragments.size > position) { val fragment = childFragmentManager.fragments.get(position) fragment.view?.let { // Now we've got access to the fragment Root View // we will use it to calculate the height and // apply it to the ViewPager2 updatePagerHeightForChild(it, binding.viewPager) } } } }) // This function can sit in an Helper file, so it can be shared across your project. 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 -> // applying Fragment Root View Height to // the pager LayoutParams, so they match lp.height = view.measuredHeight } } } }注意:我们正在使用绑定访问viewPager,如果您不使用绑定,请以您自己的方式提供viewPager,可能使用findViewById() 限制:异步加载内容 如果你有一些动态加载的内容,你可能需要配合ViewTreeObserver.OnGlobalLayoutListener的解决方案,我还没有测试过。 参考:https://issuetracker.google.com/u/0/issues/143095219 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |