为什么getAction方法总是返回ACTION_DOWN?

时间:2012-10-29 06:34:50

标签: android ontouchevent ontouchlistener

我正在使用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 个答案:

答案 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
    }