![](/img/trans.png)
[英]Android ListView onTouchEvent doesn't give ACTION_DOWN
[英]Android ListView onTouchEvent doesn't always give ACTION_DOWN
我的问题是,当我尝试在ListView中拖动一个项目时,我并不总是得到ACTION_DOWN事件。 我有很多ACTION_MOVE事件,只有一个ACTION_UP事件。 情况并非总是如此。 我有3次ACTION_DOWN。 它困惑了我。
我看了类似的问题,但它的答案似乎不适合我的。 谁能想到为什么会这样?
谢谢
//list_client -- a listview
list_client.setOnTouchListener(new View.OnTouchListener() {
float f1 = -1, f2 = -1 ;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
f1 = event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
f2 = event.getRawY();
if(f2 - f1 > 50){
if(View.VISIBLE != rl_search_and_add.getVisbility() && ){ rl_search_and_add.setVisibility(View.VISIBLE);
}
f1 = f2;
}else if (f2 - f1 < -50){
rl_search_and_add.setVisibility(View.GONE);
f1 = f2;
}
break;
case MotionEvent.ACTION_UP:
f1 = -1; f2 = -1;
break;
}
return false;
}
});
这种行为可能有几个原因。
MotionEvent.ACTION_DOWN
已由其他组件处理,但是用户如何继续拖动并点击列表视图区域,则会收到MotionEvent.ACTION_MOVE
操作。 你应该覆盖onInterceptTouchEvent,如下所示:
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
yDown = event.getRawY();
break;
default:
break;
}
return super.onInterceptTouchEvent(event);
}
然后使用yDown到你的程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.