我在RecyclerView项目中使用AndroidSwipeLayout进行“滑动删除”操作。由于RecyclerView的父级是ViewPager Fragment,因此滑动不起作用。 SwipeLayout还包含parent.requestDisallowInterceptTouchEvent(true);从父级拦截touchEvent。在不禁用ViewPager滑动的情况下,解决此问题的方法是什么。
答案 0 :(得分:4)
您必须在适配器中使用setOnTouchListener
作为列表行,如下所示:
yourListRowContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
yourViewPager.setPagerEnabled(false);
}
return true;
}
});
使用yourViewPager.setPagerEnabled(false);
时,当您滑动列表内容时,它会使您的viewpager无效,但在Fragment中再次执行此操作(这将重新激活您的viewpager):
yourRecyclerViewInFragment.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
HomeFragment.mPager.setPagerEnabled(true);
return false;
}
});