为什么ACTION_DOWN可能偶尔不会被android中的ListView触发

时间:2016-09-16 13:23:10

标签: android ontouchlistener

我试图在ListView的{​​{1}}方法中做一些工作。问题是,有时我会收到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

1 个答案:

答案 0 :(得分:1)

您的ListView是否在ScrollView中?如果它,有时ScrollView可以"窃取" Action_DOWN。 编辑:一开始不小心调用了ScrollView SpinnerView,我的不好。

EDIT2:问题显然是儿童的观点是偷窃"事件(因为事件被传递给布局层次结构中最低的子节点)。你可以通过在OnTouchEvents上返回false来解决这个问题。