实际效果图
采用结构
-
PtrFrameLayout 嵌套一个带下拉刷新的RecyclerView
PtrFrameLayout是一个自定义下拉刷新布局 -
RV内部Item包含一个横向滑动的RecyclerView在顶部
导致的问题:横向滑动RecyclerView时经常容易引起下拉刷新,这种体验很差
解决思路
-
继承RecyclerView,重写dispatchTouchEvent,根据ACTION_MOVE的方向判断是否调用getParent().requestDisallowInterceptTouchEvent去阻止父view拦截点击事件
-
通过继承PtrFrameLayout,重写requestDisallowInterceptTouchEvent方法,获取disallowIntercept来判断是否分发事件给父View(避免父View获取事件引起下拉操作)
@Override
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
disallowInterceptTouchEvent = disallowIntercept;
//子View告诉父容器不要拦截我们的事件的
super.requestDisall