我正在尝试使用在CollapsingToolbarLayout内部编写的自定义视图,但是似乎触摸事件无法正确地传播到带有手势检测的自定义视图。结果是,滚动和与视图的交互无法按预期或平稳进行。我的自定义视图大量使用GestureDetector.SimpleOnGestureListener

是否可以在CollapsingToolbarLayout中嵌入具有自己的触摸事件的自定义视图?

最佳答案

经过调查后,我发现问题出在onTouchEvent上,特别是,您需要为父视图请求requestDisallowInterceptTouchEvent,以便父视图不处理touch事件:

    public boolean onTouchEvent(MotionEvent event) {
      // Do stuff on touch
      // prevent parent container from processing ACTION_MOVE events
      if(event.getAction() == MotionEvent.ACTION_MOVE) {
        getParent().requestDisallowInterceptTouchEvent(true);
      } else if(event.getAction() == MotionEvent.ACTION_CANCEL) {
        getParent().requestDisallowInterceptTouchEvent(false);
      }

    // Do some more stuff
    return true;
}

08-04 02:19