Android ViewPager2不会动态包装不同大小片段的高度答案

您所在的位置:网站首页 丁睛和乳胶的区别 Android ViewPager2不会动态包装不同大小片段的高度答案

Android ViewPager2不会动态包装不同大小片段的高度答案

2024-06-17 01:47:19| 来源: 网络整理| 查看: 265

当片段的高度发生变化时,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



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭