2016-09-16 81 views
1

我試圖在onTouch()我的ListView方法做一些工作。問題是,有時我收到ACTION_UP類型的MotionEvent之前沒有收到ACTION_DOWN,它完全毀了我的應用程序。有人可以解釋什麼可能是一個問題?爲什麼ACTION_DOWN可能偶爾不會觸發ListView中的Android

這裏是我的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
+0

你是否重寫了一些其他'View'的'onTouchEvent()'。如果你確定你正確地返回(true或false)。 – Abbas

+0

@Abbas我不這樣做,但我有'ListView'的項目中有'onClickListener'的另一個視圖。雖然我確信當ACTION_DOWN沒有顯示時,我不會點擊這些視圖。 –

回答

1

您的ListView是否在ScrollView中?如果它,有時ScrollView可以「偷走」Action_DOWN。編輯:第一次意外調用ScrollView SpinnerView,我的不好。

編輯2:問題顯然是子視圖「偷」事件(因爲事件傳遞給佈局層次結構中最低的孩子)。你可以通過在他們的OnTouchEvents上返回false來解決這個問題。

+0

不,'ListView'在'RelativeLayout'裏面 –

+1

您是否嘗試過返回true而不是false?對不起,我不得不張貼這個答案,我不能評論不是我的帖子。 @ulmaxy – OliveraP

+0

那麼,如果我返回true,那麼這個事件被認爲是由'OnTouch()'處理的,因此我需要實現這個方法中的所有邏輯,比如垂直滾動等等,不想做。 –

相關問題