Android ScrollView会截取点击事件,这样不应该发生。

3

我有一个视图,里面有一个onClickListener,并且在scrollview中。这个视图应该对点击做出反应,但是scrollview将几乎所有的触摸事件解释为ACTION_MOVE并截取触摸事件,因此我无法点击该视图。

我已经修改了我的scrollview(因为它在一个viewpager中,需要禁用滚动viewpager)

@Override
public boolean onInterceptTouchEvent(MotionEvent p_event) {
    if (p_event.getAction() == MotionEvent.ACTION_MOVE) {
        return true;
    }
    return super.onInterceptTouchEvent(p_event);
}

@Override
public boolean onTouchEvent(MotionEvent p_event) {
    if (p_event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null) {
        getParent().requestDisallowInterceptTouchEvent(true);
    }
    return super.onTouchEvent(p_event);
}

我该如何改变ScrollView的灵敏度,以便不将微小的移动识别为ACTION_MOVE,并将触摸事件传递给其子视图?

谢谢你的帮助!

1个回答

2
没关系,我修好了! 如果你按照以下方式修改代码,它就能正常工作:
@Override
public boolean onInterceptTouchEvent(MotionEvent p_event) {
    /*if (p_event.getAction() == MotionEvent.ACTION_MOVE) {
        return true;
    }*/
    return super.onInterceptTouchEvent(p_event);
}

@Override
public boolean onTouchEvent(MotionEvent p_event) {
    if (p_event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null) {
        getParent().requestDisallowInterceptTouchEvent(true);
    }
    return super.onTouchEvent(p_event);
}

这很好,谢谢,但对我来说这是一种妥协。我在我的ScrollView中有10个子元素,并且使用此方法,我必须将相同的点击处理程序设置到所有子元素上。理想情况下,我希望我的ScrollViews父级(甚至是ScrollView本身)响应点击,但我无法使其在这两种情况下同时工作。要么滚动功能将起作用,要么点击功能将起作用,但从未同时起作用。 - RTF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接