SwipeToRefresh不尊重Android中的requestDisallowInterceptTouchEvent()

时间:2015-05-05 16:53:41

标签: android reflection swiperefreshlayout

我试图在RecyclerView项目中实现水平滚动。除了一个问题,一切都很顺利。当垂直RecyclerView位于最顶部位置(它被包裹在SwipeRefreshLayout中)并且用户水平地开始拖动然后向下移动手指时,它会启动Swip​​eToRefresh手势(小圆圈开始出现)。我尝试使用requestDisallowInterceptTouchEvent(true),就像here所描述的那样,但它没有帮助。所以我发现SwipeRefreshLayout不尊重requestDisallowInterceptTouchEvent()方法。您可以看到here阻止了ViewGroup的行为:

@Override
public void requestDisallowInterceptTouchEvent(boolean b) {
    // Nope.
}

是否可以将其更改为致电super.requestDisallowInterceptTouchEvent(b)?例如,使用反射api?

P.S。它不是像SwipeRefreshLayout和覆盖方法那样简单,因为它在第三部分库内......

1 个答案:

答案 0 :(得分:3)

您可以暂时禁用它。

mPullToRefreshLayout.setEnabled(false);