TabLayout的滑动回弹等问题

本文总结了在使用Android TabLayout时遇到的常见问题,包括NoClassDefFoundError错误,滑动无回弹效果的解决方案,以及app:tabMode的使用建议。错误通常是由于版本不一致导致,滑动问题的解决关键在于使用getChildFragmentManager。同时,文章讨论了TabMode的fixed和scrollable两种模式的适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载请注明出处:http://blog.youkuaiyun.com/kiddTeb/article/details/52588944

前言

  • 对于实现滑动标签页,我们可能会使用第三方开源库,比如PagerSlidingTabStrip或者viewpagerindicator,自从官方除了TabLayout可能更多人去选择使用TabLayout+ViewPager去实现,在这里就不说如何去使用,网上教程有很多也很详细。现在主要总结一下在使用过程中遇到的一些问题,总结一下。

NoClassDefFoundError

  • 我在使用的时候,发生了这个错误java.lang.NoClassDefFoundError: android.support.v7.widget.TintManager,这个找不到类的状况困扰了我好久,最后才发现是因为包导入的问题。在我们导入TabLayout的依赖包的时候,一定要注意
compile 'com.android.support: design:23.4.0'
compile 'com.android.support: appcompat-v7:23.4.0'

它们两个的版本号,一定要 * 一致 *(不一定是上面的版本)。否则会出现上面的错误信息。
有时候出现问题了,可以去考虑一下版本号是否一致的问题。

滑动没有回弹效果

  • 也就是滑动的时候会卡在中间,如图所示
    这里写图片描述
  • 出现这个状况,你可以去查查自己的代码,是否出现 ↓
mAdapter = new ViewPagerAdapter(getFragmentManager() , mFragment , mTitle) ;

在new一个适配器的时候,是不是通过getFragmentManager()来获取Manager的,如果是的话,那就有问题了,因为调用这个方法返回的是该 fragment 所在 activity 的 FragmentManager,应该使用 getChildFragmentManager 方法获取到的 FragmentManager,也就是这样 ↓

mAdapter = new ViewPagerAdapter(getChildFragmentManager() , mFragment , mTitle) ;

这样就不会出现之前的那状况了

app:tabMode

  • 有两种模式,一种是fixed,还有一种是scrollable。这两个是有区别的。
  • scrollable:模式,在标签页少的时候,会向一边挤过去导致不会占满父布局的宽度,这样显得极其不美观,这种模式只适合于当有很多个标签页的时候就可以去使用这个模式,这个时候就不会显得每个标签宽度太过于窄小。
  • fixed:使用这种模式,就会在父布局的宽度范围内,均匀分布每个标签标题,使得导航栏的每个标签显得美观自然,适合少的标签页情况,如果多的话,就会显得每个标签宽度太过于窄小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值