我正在尝试在我的onTouch()
的ListView
方法中做一些工作。问题是有时我收到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 / TAG:ATCION_DOWN
09-16 20:15:02.186 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:02.846 25661-25661 / com.ulmaxy.morny D / TAG:ATCION_DOWN
09-16 20:15:02.916 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:03.586 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:04.166 25661-25661 / com.ulmaxy.morny D / TAG:ATCION_DOWN
09-16 20:15:04.276 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:05.316 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:06.086 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:07.046 25661-25661 / com.ulmaxy.morny D / TAG:ACTION_UP
09-16 20:15:08.136 25661-25661 / com.ulmaxy.morny D / TAG:ATCION_DOWN
09-16 20:15:08.256 25661-25661 / com.ulmaxy.morny D / TAG: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:问题显然是子视图正在“窃取”该事件(因为该事件被传递给布局层次结构中的最低子级)。您可以通过在其OnTouchEvents上返回false来解决该问题。