我一直在在线上和在StackOverflow上搜索如何在onTouchListener
中执行操作(如果该事件是轻击而不是任何形式的动作),但是我无法找到答案,并且我尝试过的方法也不起作用。我有一个ListView
Adapter
,并且在getView
方法中,我在onTouchListener
上设置了listItem
。
我想做的是点击listItem
时,我想显示一个Toast
,但是如果事件是拖动(,例如用户滚动浏览列表),我不想显示Toast
。
下面是我尝试过的代码。 ( makeToast
是用于创建Toast
的函数,而events.getRelation()
是我想在Toast
中包含的字符串。):
listItem.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_HOVER_ENTER) {
makeToast(events.getRelation());
} else if (event.getAction() == MotionEvent.ACTION_UP) {
// makeToast(events.getRelation());
} else if (event.getAction() == MotionEvent.ACTION_SCROLL) {
// makeToast(events.getRelation());
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
// makeToast(events.getRelation());
} else if (event.getAction() == MotionEvent.AXIS_SCROLL) {
// makeToast(events.getRelation());
} else if (event.getAction() == MotionEvent.AXIS_VSCROLL) {
// makeToast(events.getRelation());
} else {
//makeToast(events.getRelation());
}
return false;
}
});
我曾尝试在不同类型的makeToast
下使用MotionEvents
方法,但是由于根本没有生成Toast
或它是在我滚动而不是点击时制作的。有人可以帮助我吗?我觉得这是一个简单的问题,但我一直找不到解决方法
答案 0 :(得分:0)
根据我的理解,我认为您希望为整个活动设置Click监听器!
为此,请添加ViewTreeObserver
:
appendDocument()
答案 1 :(得分:0)
要检测android中的单击和双击,请使用以下方法
class GestureTap extends GestureDetector.SimpleOnGestureListener { @Override public boolean onDoubleTap(MotionEvent e) { Log.i("onDoubleTap :", "" + e.getAction()); return true; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { Log.i("onSingleTap :", "" + e.getAction()); return true; } }
并在onTouch侦听器中添加以下代码
@Override public boolean onTouchEvent(MotionEvent event) { new GestureDetector(this, new GestureTap()).onTouchEvent(event); return true; }