一、页面控件布局
-
SmartRefreshLayout
-
CoordinaLayout
-
AppBarLayout
-
RecyclerView
- ViewPager2
-
-
-
二、问题出现
在上下滑动过程中,发现 AppBarLayout 的 addOnOffsetChangedListener
不回调,导致在里面的部分逻辑不生效,页面出现问题。
三、问题分析
当时第一反应就是滑动发生了冲突,因为 ViewPager2
是处理了上下、左右滑动的,而上下滑动如果没有处理好,就会导致父控件与子控件之间滑动发生冲突。考虑到 ViewPager2
实际就是利用 RecyclerView
来实现的功能,而RecyclerView
嵌套横向滑动的RecyclerView
又是老生常谈的问题,所以当时优先考虑调用RecyclerView
的setNestedScrollingEnabled
来解决。
但在对 ViewPager2 的源码进行阅读时并未发现有对应的 API 提供,因为使用了反射
。
具体代码如下:
Field field = mViewPager2.getClass().getDeclaredField("mRecyclerView");
field.setAccessible(true);
RecyclerView recyclerView = (RecyclerView) field.get(mViewPager2);
recyclerView.setNestedScrollingEnabled(false);
复制代码
最后完美解决!!!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END