为什么android中的ListView偶尔不会触发操作
我正试图在我的为什么android中的ListView偶尔不会触发操作,android,ontouchlistener,Android,Ontouchlistener,我正试图在我的ListView的onTouch()方法中做一些工作。问题是,有时我收到ACTION\u UP类型的MotionEvent,而之前没有收到ACTION\u DOWN,这完全破坏了我的应用程序。有人能解释一下有什么问题吗 下面是我的OnTouchListener的一些代码: @Override public boolean onTouch(final View v, MotionEvent event) { switch (event.getAction()) {
ListView
的onTouch()方法中做一些工作。问题是,有时我收到ACTION\u UP
类型的MotionEvent
,而之前没有收到ACTION\u 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\u 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\u UP
09-16 20:15:03.586 25661-25661/com.ulmaxy.morny D/TAG:ACTION\u 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\u UP
09-16 20:15:05.316 25661-25661/com.ulmaxy.morny D/TAG:ACTION\u UP
09-16 20:15:06.086 25661-25661/com.ulmaxy.morny D/TAG:ACTION\u UP
09-16 20:15:07.046 25661-25661/com.ulmaxy.morny D/TAG:ACTION\u 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\u UP
09-16 20:15:09.206 25661-25661/com.ulmaxy.morny D/TAG:ACTION\u UP
您的列表视图是否在滚动视图中?如果是这样,有时ScrollView可以“窃取”动作。
编辑:一开始不小心称为ScrollView SpinnerView,我的不好
EDIT2:问题显然是子视图“窃取”了事件(因为事件被传递给布局层次结构中最底层的子视图)。你可以通过在他们的事件中返回false来解决这个问题 否,
ListView
在RelativeLayout
中。您是否尝试过返回true而不是false?很抱歉,我不得不将此作为答案发布,我无法评论不是我的帖子@ulmaxyWell,如果我返回true,那么事件被认为是由OnTouch()
处理的,因此我需要实现此方法中的所有逻辑,例如垂直滚动等,我显然不想这样做。从一个动作中返回false意味着你不想要这个事件,其他视图将有机会处理它。如果它没有任何重叠视图,则父视图将处理它@Ulmaxyth这是真的,但不知何故,我可以接收到操作向上
,即使在处理操作向下
后返回false后也是如此,这相当令人困惑。无论如何,我只是试图从ACTION\u DOWN
和ACTION\u MOVE
返回true,但我仍然有问题@oliverap你是否覆盖了其他视图onTouchEvent()
。如果您确保返回正确(无论是true
还是false
)。@Abbas我没有这样做,但我在ListView
的项中有另一个视图,它们的onClickListener
。虽然我确信当ACTION_DOWN没有出现时,我不会点击这些视图。