2015-09-28 69 views
3

我有一个拥有标题/ TextView和ViewPager的Viewholder的RecyclerView。为视图的一部分禁用ItemTouchHelper

RecyclerView中的物品可以通过ItemTouchHelper擦掉。

我想禁用viewpager的swipe away部分,但是如果你开始在标题/ TextView上拖动,则不会。

任何人知道如何禁用刷卡只是视图的一部分?

我可以禁用刷卡整个viewholder与ItemTouchHelper这样:

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

return super.getSwipeDirs(recyclerView, viewHolder); 

但如何禁用它只是一个ViewHolder的一部分?

回答

3

通过对孩子viewpager加入requestDisallowInterceptTouchEvent(真)解决我的问题:

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; 

    } 
}); 
5

试试这个代码

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) { 

     } 
    }); 
+0

感谢喜试图帮助。如果我将它添加到子ViewPager – Elias

+0

如果这有助于请回报,因为答案是有用的并且被接受 –