2

我正在使用 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;
    }
});
4

4 回答 4

7

如果您返回false,则表示您不希望收到更多的触摸事件。您需要返回true以继续获取运动事件。

于 2012-10-29T06:41:44.367 回答
1

事件监听器本身一次监听一个事件动作。第一个当然是 ACTION.DOWN,您的吐司会在其中显示。

就像 Jason Robinson 和 user936414 一样,您必须将其返回为 true,以便对象或侦听器可以在此处执行第二个事件操作 ACTION.OUTSIDE。

于 2012-10-29T07:19:53.790 回答
1

通过添加以下内容非常简单地修复:

 override fun onTouchEvent(event: MotionEvent): Boolean {
        return true
    }
于 2018-11-27T14:29:51.013 回答
0

当触摸在活动之外并且设置了标志 FLAG_WATCH_OUTSIDE_TOUCH 时,您将获得 ACTION_OUTSIDE。参考http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_WATCH_OUTSIDE_TOUCH

于 2012-10-29T06:42:35.023 回答