为部分查看器禁用 ItemTouchHelper

Disable ItemTouchHelper for a part of a viewholder

我有一个 RecyclerView,它有一个 title/TextView 和一个 ViewPager。

可以使用 ItemTouchHelper 清除 RecyclerView 中的项目。

我想禁用 viewpager 的滑动部分,但如果你开始拖动 title/TextView。

有谁知道如何仅对取景器的一部分禁用滑动吗?

我可以通过这种方式禁用使用 ItemTouchHelper 滑动整个视窗:

ItemTouchHelper()...
@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder)
{
    if (viewHolder instanceof UnswipeableViewHolder)
    {
        return 0;
    }
}

return super.getSwipeDirs(recyclerView, viewHolder);

但是如何仅对 ViewHolder 的一部分禁用它?

试试这个代码

recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
            int action = e.getAction();
            switch (action) {
                case MotionEvent.ACTION_MOVE:
                    rv.getParent().requestDisallowInterceptTouchEvent(true);
                    break;
            }
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {

        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }
    });

通过在子 viewpager 上添加 requestDisallowInterceptTouchEvent(true) 解决了我的问题:

this.viewPager.setOnTouchListener(new View.OnTouchListener()
{
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent)
    {
        int action = motionEvent.getAction();

        switch (action)
        {
            case MotionEvent.ACTION_MOVE:
                view.getParent()
                        .requestDisallowInterceptTouchEvent(true);
                break;
        }

        return false;

    }
});