当前位置: 首页 > news >正文

Android笔记(四十一):TabLayout内的tab不滚动问题

背景

在这里插入图片描述
假设二级页面是上面图片的布局,当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem,跳转到最后一个tab页面时,会发现tab不滚动,手动滑一下ViewPager2时才会滚动tab到正确的位置

原因分析

  • 调用TabLayoutMediator.attach时,会调用TabLayout.setScrollPosition
    在这里插入图片描述
  • TabLayout.setScrollPosition就是用来滚动tab的
    在这里插入图片描述
    通过断点发现scrollTo传入了0,造成tab不滚动,而position不为0,所以是scrollXForPosition为0导致的
  • calculateScrollXForTab方法是计算tab滚动的距离
    在这里插入图片描述
    通过断点发现是因为selectedChild.getLeft()和selectedWidth都返回了0,因为abLayout和ViewPager2绑定完就马上调setCustomItem,这时候TabLayout还没有完成布局测量操作,所以tab的位置这些信息还拿不到。

解决方法

post一个Runnable再执行setCurrentItem,这时候tab已经完成测量,能拿到宽度,左边距等信息

binding.tabLayout.post {binding.viewPager.setCurrentItem(index, false)
}
http://www.lryc.cn/news/511611.html

相关文章:

  • 基于pytorch的深度学习基础3——模型创建与nn.Module
  • Debian-linux运维-docker安装和配置
  • Docker完整技术汇总
  • 在JavaScript文件中定义方法和数据(不是在对象里定以数据和方法,不要搞错了)
  • python爬虫爬抖音小店商品数据+数据可视化
  • 关于 覆铜与导线之间间距较小需要增加间距 的解决方法
  • uniapp中Nvue白屏问题 ReferenceError: require is not defined
  • 在 Windows 上,如果忘记了 MySQL 密码 重置密码
  • 《PyTorch:从基础概念到实战应用》
  • 前端:改变鼠标点击物体的颜色
  • Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor
  • HTML4笔记
  • python报错ModuleNotFoundError: No module named ‘visdom‘
  • linux-21 目录管理(一)mkdir命令,创建空目录
  • 总结-常见缓存替换算法
  • 【Vue】如何在 Vue 3 中使用组合式 API 与 Vuex 进行状态管理的详细教程
  • VSCode 插件开发实战(十五):如何支持多语言
  • 面试241228
  • ​Python数据序列化模块pickle使用
  • Spring Boot对访问密钥加解密——HMAC-SHA256
  • HTML 元素:网页构建的基础
  • HEIC 是什么图片格式?如何把 iPhone 中的 HEIC 转为 JPG?
  • 爆肝1个月:DDR4 的信号完整性(万字长文SI)
  • 前端js验证码插件
  • 关于easy-es对时间范围查询遇到的小bug
  • Mask R-CNN
  • 大模型-Dify使用笔记
  • Suno Api V4模型无水印开发「综合实战开发自己的音乐网站」 —— 「Suno Api系列」第14篇
  • 云原生架构中的中间件容器化:优劣势与实践探索
  • 如何测试模型推理性能:从零开始的Python指南