BottomSheetBehavior+ViewPager+RecyclerView引起的滑动冲突事件解决

本文解决BottomSheetBehavior与ViewPager及RecyclerView嵌套时的滑动冲突问题,提供了一个优化后的BottomSheetBehavior实现,通过引用特定的库和调整配置,确保滑动顺畅。

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

项目中,使用到抽屉+ViewPager,同时ViewPager中使用RecyclerView,这时会出现事件传递异常,最内侧的RecyclerView接收不到滑动事件,导致无法滑动。

遇到问题,自然搜索,没想到搜索后,全网基本全是这篇文章的转载,

BottomSheetBehavior的ViewPager嵌套RecyclerView滑动失效问题记录

通过这篇文章启发去看了下源码,可以看到BottomSheetBehavior只支持内部有一个可以上下滑动的控件,多个的话就取第一个。

截止到这里,那篇文章的解决办法比较含糊,反正我是没有解决掉,于是又打开Google。

下面进入问题解决:

一,搜索到这篇文章android - 带有RecyclerView的Android ViewPager在BottomSheet中工作不正常

这篇文章其实是对Stack Overflow一个问题最佳答案的整理,Android ViewPager with RecyclerView works incorrectly inside BottomSheet。解决办法是有大神根据BottomSheetBehavior优化了只获取一个可滑动控件的问题,并上传了git。到这里,大家其实去看这两篇文章,或者去 ViewPagerBottomSheet 这个git,看里面的示例 应该就能够解决问题了。

二,具体引用

1,在项目根目录下的build.gradle中添加以下代码;

repositories {
    maven { url "https://raw.github.com/laenger/maven-releases/master/releases" }
}

2,在项目主Module中,一般是app/build.gradle中,添加依赖;

dependencies {
    implementation "biz.laenger.android:vpbs:0.0.6"
}

3,在你调用抽屉BottomSheetBehavior处的布局文件中,引用替换为

app:layout_behavior="@string/view_pager_bottom_sheet_behavior"

4,在你代码中获取ViewPager对象后,添加以下代码

BottomSheetUtils.setupViewPager(bottomSheetViewPager)

5,记得之前引用的BottomSheetBehavior全部改为ViewPagerBottomSheetBehavior

 

三,以上步骤完成后,就完成引用了,这是编译运行项目

1,可能会报资源找不到的情况,你只要把你的app/build.gradle文件中的

compileSdkVersion修改为29,这个29我是看示例文档中知晓的。

2,记得还有一个编译异常com.android.builder.dexing.DexArchiveBuilderException,这个在app/build.gradle文件android{}中添加以下代码。

如果还有其他编译问题,在搜索下解决即可。

compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

 

至此,这个BottomSheetBehavior+ViewPager+RecyclerView引起的滑动冲突事件,解决。

吐槽一下:CSDN编辑器没找到格式化功能,排版不好看,大家见谅。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值