ScrollView:将触摸事件传递给孩子

时间:2013-01-26 16:55:57

标签: java android scrollview

我用ImageView制作了一个“操纵杆”。它在ScrollView内。

它在没有ScrollView的情况下有效,但在ScrollView内部却没有收到TouchEvents的垂直移动。

如何阻止ScrollView阻止触摸事件?

3 个答案:

答案 0 :(得分:6)

我找到了解决方案here

我创建了一个自定义ScrollView类,它有一个布尔值来指示它是否被锁定。 重写onInterceptTouchEvent方法:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    if (!mScrollable) return false;
    return super.onInterceptTouchEvent(ev);
}

触摸操纵杆(ACTION_DOWN)时,自定义ScrollView被锁定。在ATCTION_UP事件中它被解锁。

答案 1 :(得分:4)

您需要根据需要打开和关闭此功能..

的getParent()。requestDisallowInterceptTouchEvent(真)。

我不确定为什么你在滚动视图中有操纵杆,操纵杆是否也应该与视图一起滚动?如果这是预期的,上面的路线将是最好的解决方案。如果它不应该与视图一起滚动,我会帮助你找到一种更好的方法,在你的视图中包含操纵杆。

答案 2 :(得分:-1)

简单的答案在这里: https://stackoverflow.com/a/34436589/3818437

使用

声明您的ScrollView无法点击/可聚焦
android:clickable="false" and android:focusable="false"

v.setClickable(false) and v.setFocusable(false)

现在应该将点击事件发送到ScrollView的父级。