单击外部时,我的弹出窗口应自动关闭。我已经读过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
可能的解决方法是?
如果要在外部关闭弹出窗口,则可以进行以下设置:
popupWindow.setFocusable(true);
popupWindow.setTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setOutsideTouchable(true);
popupWindow.update();