我正在尝试在我的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来解决该问题。

10-06 06:09