Android 当我在外边点击时,弹出窗口是如何关闭的?

Android 当我在外边点击时,弹出窗口是如何关闭的?,android,android-popupwindow,Android,Android Popupwindow,我在项目中使用PopupWindow。 当触摸显示屏时,我不能忽略它。我试过: @Override public void onResume() { super.onResume(); new Handler().postDelayed(new Runnable() { @Override public void run() { View popup = LayoutInfla

我在项目中使用
PopupWindow
。 当触摸显示屏时,我不能忽略它。我试过:

@Override
    public void onResume() {
        super.onResume();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                View popup = LayoutInflater.from(getActivity()).inflate(R.layout.popup, null, false);
                final PopupWindow popupWindow = new PopupWindow(popup, (int) DpiToPixel.calculateDpToPixel(150, getActivity()),
                        (int) DpiToPixel.calculateDpToPixel(150, getActivity()), true);
                popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0);
                popup.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        popupWindow.dismiss();
                    }
                });
                popupWindow.setOutsideTouchable(true);
                popupWindow.setTouchable(true);
                popupWindow.setBackgroundDrawable(new BitmapDrawable());
                popupWindow.setTouchInterceptor(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        Toast.makeText(getActivity(),"Click!",Toast.LENGTH_LONG).show();
                        popupWindow.dismiss();
                        return true;
                    }
                });
            }
        }, 100L);
    }

但它不起作用。我尝试了
popupWindow.setFocusable(true)我在
PopupWindow
上尝试了
setBackgroundDrawable
,但都不起作用。如何关闭此弹出窗口?????

设置
BackgroundDrawable
,然后将
setOutsideTouchable
参数设置为true

setOutsideTouchable:指示是否将打开弹出窗口 在其窗口外通知触摸事件

或者试试这个:

myPopupWindow.setFocusable(true);

将此语句移动到
run()
方法的末尾:

popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0);

换句话说,在您完成所有配置呼叫之前,不要显示弹出窗口。

我的回答对您有用吗?
popupWindow.showAtLocation(rootView, Gravity.CENTER, 0, 0);