xmuSistone/PersistentRecyclerView

华为Mate 20手机的bug

Xumingrong opened this issue · 22 comments

你好,我在华为Mate 20手机上(EMUI10.1.0、Androd 10),页面滑到最底部,点击屏幕,页面会不自然的向上滚动一段距离。不知道这是什么原因。

能描述清楚一些么?或者截个视频?

我这也有同样的问题 android 10系统,望大佬看看

@lennyup @Xumingrong 我试了安卓10是没问题的啊,Mate 20也没问题。 你们是改了代码么?还是直接跑的demo?

@xmuSistone demo也是有这个问题的,就是 在不吸顶的时候按住上滑或者下滑,就会自动滚一段距离

华为手机有这个问题

@xmuSistone 华为P30复现了,大佬能不能修复下

谁能发个截屏视频? 120809170@qq.com

@xmuSistone 大佬发你了

我看下

过来再催一催。。

@youlookwhat 我试了几台安卓10.0的手机,发现都没问题;

请问,这是稳定复现的么?还是有一定的规律性?

PS: 跳跃问题,归结于内联滑动,我初步怀疑是ParentRecyclerView. onNestedPreScroll那里出问题了,猜测是华为手机的computeVerticalScrollOffset有问题;

我估计不一定是安卓10的问题,华为感觉是必现,我用公司的两台华为手机都复现了

我找华为机试下

恩恩 麻烦啦

华为 且为 Android10 的手机能复现,公司另一台华为android9是好的

比较急,希望能尽快解决。。(华为的Android10系统)

@youlookwhat @lennyup @Xumingrong 华为手机的问题已经FIX,DEMO APK也已更新 - 参看今天的两次commit

问题原因:ChildRecyclerView消费Touch事件发起内联滑动,但是却被ParentRecyclerView拦截;华为手机对Touch拦截的阈值较小,也就是说拦截很灵敏;

PS:感谢各位发现此类问题

@xmuSistone 很遗憾问题还存在..

我觉得应该在dispathTouchEvent中进行禁止父控件的touch事件拦截,onTouchEvent不一定会走的

@lennyup 分发和拦截是两码事,你不能弄混的,onTouchEvent是谁来消费,有很严谨的设计;建议仔细看下相关的博客文档,touch事件的流转,水很深;

这个问题 在华为 android 10.0 上 还存在, 给fragment 的itemView 添加OnClickListener 事件后, 华为手机必现。 感觉是parentRecyclerView onInterceptTouchEvent 直接返回false, 没有调用super 事件, 导致 mLastTouchY 没有更新到正确的值, 导致dy值不正确,parentRecyclerView 会有上移的现象