区分customView和scroll view的触摸事件

Differentiate touch events between customView and scroll view

我在滚动视图中添加了一个customView 和一个customView。现在我想区分两个触摸事件。我的问题是当尝试滚动时,customView 也获取触摸事件,当我尝试更改 customView 时,滚动视图获取事件。

  1. 我们如何在滚动时停止 customView 触摸事件。
  2. 当customView需要事件时,我们如何停止滚动触摸事件。

提前致谢

你可以给child view设置touch listener,然后在onTouch()事件中,你可以屏蔽拦截父view的touch事件。

v.setOnTouchListener(new OnTouchListener() {
    // Setting on Touch Listener for handling the touch inside ScrollView
    @Override
    public boolean onTouch(View v, MotionEvent event) {
    // Disallow the touch request for parent scroll on touch of child view
    v.getParent().requestDisallowInterceptTouchEvent(true);
    return false;
    }
});

关于第二个问题,我不确切知道你在用 customview 做什么,但也许你想改用点击事件,因为在 ontouch 中使用不同的逻辑对用户来说不是很友好和 onclick 因为它总是会意外启动。

boolean isScrolling = false;

myScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) 
 isScrolling = scrollX != oldScrollX;

//for vertical scrolling

});

//then onTouchListener

if(!isScrolling){//Do operations on non scrolled state}