Android 如何防止滚动事件被弹出窗口截获

Android 如何防止滚动事件被弹出窗口截获,android,onclick,android-popupwindow,Android,Onclick,Android Popupwindow,当我单击弹出窗口外的空间时,该窗口将被关闭。但是,如果我想在窗口外滚动列表视图,滚动事件首先会被识别为单击事件,并被窗口截获,因此在不执行滚动的情况下,窗口会被关闭 如何在关闭窗口的同时滚动列表视图,这样我就不需要再滚动它了。请尝试以下属性: window.setTouchable(true); window.setOutsideTouchable(true); window.setFocusable(false); 在这种情况下,当您在弹出窗口的框架外单击时,弹出窗口

当我单击
弹出窗口
外的空间时,该窗口将被关闭。但是,如果我想在窗口外滚动
列表视图
,滚动事件首先会被识别为单击事件,并被窗口截获,因此在不执行滚动的情况下,窗口会被关闭


如何在关闭窗口的同时滚动
列表视图
,这样我就不需要再滚动它了。

请尝试以下属性:

    window.setTouchable(true);
    window.setOutsideTouchable(true);
    window.setFocusable(false);
在这种情况下,当您在弹出窗口的框架外单击时,弹出窗口不会被关闭,但您可以添加一个侦听器来捕捉外部触摸并关闭弹出窗口:

    window.setTouchInterceptor(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                window.dismiss();
                return true;
            }
            return false;
        }
    });

请尝试以下属性集:

    window.setTouchable(true);
    window.setOutsideTouchable(true);
    window.setFocusable(false);
在这种情况下,当您在弹出窗口的框架外单击时,弹出窗口不会被关闭,但您可以添加一个侦听器来捕捉外部触摸并关闭弹出窗口:

    window.setTouchInterceptor(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                window.dismiss();
                return true;
            }
            return false;
        }
    });