我正在使用onTouchListener进行布局。我想在布局外面点击。我为布局设置了onTouchListetener。但是运动事件总是显示ACTION_DOWN。即使我触摸视图外,它也没有显示ACTION_OUTSIDE。任何人都可以帮我找出为什么它没有显示恒定的ACTION_OUTSIDE。这是我正在使用的代码
Layout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("action",event.getAction()+"");
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
Toast.makeText(getApplicationContext(), "check", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
答案 0 :(得分:4)
如果您返回false
,则表示您不希望再收到触摸事件。您需要返回true
才能继续获取动作事件。
答案 1 :(得分:1)
事件侦听器本身一次侦听一个事件操作。第一个当然是ACTION.DOWN,你的吐司会在其中显示。
就像Jason Robinson和user936414一样,您必须将其返回true,以便对象或侦听器可以在此处执行第二个事件操作ACTION.OUTSIDE。
答案 2 :(得分:0)
当触摸在活动之外并且设置了标志FLAG_WATCH_OUTSIDE_TOUCH时,您将获得ACTION_OUTSIDE。请参阅http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_WATCH_OUTSIDE_TOUCH
答案 3 :(得分:0)
添加以下内容很容易解决:
override fun onTouchEvent(event: MotionEvent): Boolean {
return true
}