我正在尝试在我的 ListView
的 onTouch()
方法中做一些工作。问题是有时我会收到 ACTION_UP
类型的 MotionEvent
而之前没有收到 ACTION_DOWN
,这完全毁了我的应用程序。有人可以解释可能是什么问题吗?
这是我的 OnTouchListener
的一些代码:
@Override
public boolean onTouch(final View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("TAG", "ATCION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
//Log.d("TAG", "ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:
Log.d("TAG", "ACTION_UP");
break;
}
return false;
}
这是我从日志中得到的:
- 09-16 20:15:02.116 25661-25661/com.ulmaxy.morny D/标签:ATCION_DOWN 09-16 20:15:02.186 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:02.846 25661-25661/com.ulmaxy.morny D/标签:ATCION_DOWN 09-16 20:15:02.916 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:03.586 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:04.166 25661-25661/com.ulmaxy.morny D/标签:ATCION_DOWN 09-16 20:15:04.276 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:05.316 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:06.086 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:07.046 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:08.136 25661-25661/com.ulmaxy.morny D/标签:ATCION_DOWN 09-16 20:15:08.256 25661-25661/com.ulmaxy.morny D/标签:ACTION_UP 09-16 20:15:09.206 25661-25661/com.ulmaxy.morny D/TAG:ACTION_UP
最佳答案
您的 ListView 是否在 ScrollView 中?如果是这样,有时 ScrollView 可以“窃取”Action_DOWN。 编辑:一开始不小心调用了 ScrollView SpinnerView,我的错。
EDIT2:问题显然是 subview “窃取”了事件(因为事件被传递给布局层次结构中最低的 subview )。您可以通过在他们的 OnTouchEvents 上返回 false 来解决这个问题。
关于android - 为什么 ACTION_DOWN 可能偶尔不会在 Android 中为 ListView 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532608/