区分customView和滚动视图之间的触摸事件

时间:2018-03-12 15:10:30

标签: android scrollview android-custom-view touch-event

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

  1. 滚动时如何停止customView触摸事件。
  2. 当customView需要事件时,我们如何停止滚动触摸事件。
  3. 提前致谢

2 个答案:

答案 0 :(得分:2)

您可以将触摸侦听器设置为子视图,然后在onTouch()事件中,您可以阻止拦截父项的触摸事件。

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;
    }
});

关于第二个问题,我并不确切知道您使用自定义视图做了什么,但也许您想要使用点击事件,因为它使用起来并不方便用户使用ontouchonclick中的不同逻辑,因为它总会意外启动。

答案 1 :(得分:1)

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;

//用于垂直滚动

});

//然后onTouchListener

if(!isScrolling){//对非滚动状态执行操作}