【发布时间】:2013-01-26 16:55:57
【问题描述】:
我用ImageView 做了一个“操纵杆”。它位于ScrollView 内。
它可以在没有ScrollView 的情况下工作,但在ScrollView 内它不会接收TouchEvents 进行垂直移动。
如何阻止ScrollView 阻止触摸事件?
【问题讨论】:
标签: java android scrollview
我用ImageView 做了一个“操纵杆”。它位于ScrollView 内。
它可以在没有ScrollView 的情况下工作,但在ScrollView 内它不会接收TouchEvents 进行垂直移动。
如何阻止ScrollView 阻止触摸事件?
【问题讨论】:
标签: java android scrollview
我找到了解决方案here。
我创建了一个自定义的 ScrollView 类,它有一个布尔值来指示它是否被锁定。 onInterceptTouchEvent 方法被覆盖:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!mScrollable) return false;
return super.onInterceptTouchEvent(ev);
}
当操纵杆被触摸时(ACTION_DOWN),自定义的 ScrollView 被锁定。在 ATCTION_UP 事件中它被解锁。
【讨论】:
你会想要根据需要打开和关闭它..
getParent().requestDisallowInterceptTouchEvent(true).
我不完全确定您为什么在滚动视图中有操纵杆,操纵杆是否也应该随着视图滚动?如果这是预期的,那么上面的路线将是最好的解决方案。如果它不应该随着视图滚动,我会帮助您制定一个更好的方法,将操纵杆包含在您的视图中。
【讨论】:
简单的答案在这里: https://stackoverflow.com/a/34436589/3818437
通过使用声明您的 ScrollView 不可点击/可聚焦
android:clickable="false" and android:focusable="false"
或
v.setClickable(false) and v.setFocusable(false)。
现在应该将点击事件分派给 ScrollView 的父级。
【讨论】: