如何防止滚动事件被 PopupWindow 拦截

How to prevent the scroll event from being intercepted by a PopupWindow

当我单击 PopupWindow 之外的 space 时,window 被关闭。但是,如果我想在 window 之外滚动 ListView,滚动事件首先被识别为点击事件,并被 window 拦截,因此 window被解雇,而滚动没有被执行。

如何在 ListView 被关闭的同时滚动 window ,这样我就不需要再次滚动它了。

试试这组属性:

    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;
        }
    });