Android 10上的弹出窗口自动关闭

问题描述 投票:1回答:1

单击外部时,我的弹出窗口应自动关闭。我已经读过this topic,并且已将背景可绘制到窗口中。这是我的代码:

    protected int showPopupWindow(final int popupWidth) {

        hideCalendarCellPopupWindow();

        final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        final View popupView = inflater.inflate(R.layout.popup_calendar_cell, null);

        mCalendarCellPopupWindow = new PopupWindow(popupView, popupWidth, ViewGroup.LayoutParams.WRAP_CONTENT);
        mCalendarCellPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        mCalendarCellPopupWindow.setOutsideTouchable(true);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mCalendarCellPopupWindow.setElevation(...);
        }

        mCalendarCellPopupWindow.showAtLocation(....);
    }

    private hideCalendarCellPopupWindow() {
        if (mCalendarCellPopupWindow != null) {
            mCalendarCellPopupWindow.dismiss();
            mCalendarCellPopupWindow = null;
        }
    }

Android 10出现了一个问题,因为您可以触摸手机屏幕的外部并在屏幕内部滑动手指,同时可以用这种手势显示“最近的应用程序”。

所以我的问题是,当我将手指从底部滑到顶部一点,然后再回到底部时,不会关闭弹出窗口,而且不能再关闭弹出窗口,因为其属性isShowing()返回false 。我试图在popupWindow.dismiss()中调用onPause()方法,但是在这种情况下并没有调用它。该截屏视频可以更多地解释这个问题:https://youtu.be/w2cQMvFMYkk

可能的解决方法是?

android gesture popupwindow dismiss
1个回答
0
投票

如果要在外部关闭弹出窗口,则可以进行以下设置:

popupWindow.setFocusable(true);
popupWindow.setTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setOutsideTouchable(true);
popupWindow.update();
© www.soinside.com 2019 - 2024. All rights reserved.