requestDisallowInterceptTouchEvent does not work unless selecting view first

前端 未结 2 1653

According to android docs you can get your parent ViewGroup and call requestDisallowInterceptTouchEvent(true) on it to stop other things from interferi

相关标签:
2条回答
  • 2021-02-04 12:17

    I had some problems too with 2.3 where it the disallow would intermittenltly work.

    I used to call view.requestDisallowInterceptTouchEvent(true) regardless of the event.getAction().

    Then I tried to be a good citizen and changed my code in the onTouch() method to the following:

    switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                v.requestDisallowInterceptTouchEvent(true);
                break;
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP:
                v.requestDisallowInterceptTouchEvent(false);
                break;
            default:
                break;
            }
    

    Remember that this method (or some other views under the referenced view) has to return true for the parents to adhere to the disallow request.

    Not sure this will fix your issue but worth a try.

    0 讨论(0)
  • 2021-02-04 12:40

    You can try this one:

    m_parentScrollView.setOnTouchListener(new View.OnTouchListener() 
    {
           public boolean onTouch(View p_v, MotionEvent p_event) 
            {
                   m_childScrollView.getParent().requestDisallowInterceptTouchEvent(false);
               //  We will have to follow above for all scrollable contents
               return false;
            }
    });
    
                                            **OR**
    
    m_childScrollView.setOnTouchListener(new View.OnTouchListener() 
    {
          public boolean onTouch(View p_v, MotionEvent p_event)
           {
              // this will disallow the touch request for parent scroll on touch of child view
               p_v.getParent().requestDisallowInterceptTouchEvent(true);
               return false;
           }
    });
    
    0 讨论(0)
提交回复
热议问题