在弹出窗口外触摸时忽略PopupWindow,而不使用弃用的构造函数

mar*_*595 14 android popupwindow

我有一个PopupWindow,我希望它在用户触摸外面时解散,所以我调查并发现我必须使用它popup.setBackgroundDrawable(new BitmapDrawable());.问题new BitmpaDrawable()是不推荐使用构造函数.我想在不使用它的情况下找到解决方案.

谁知道怎么解决这个问题?

谢谢!

                final PopupWindow popup = new PopupWindow(sortByView,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,
                                          ViewGroup.LayoutParams.WRAP_CONTENT,            
                                          true);
                popup.setBackgroundDrawable(new BitmapDrawable());
                popup.setOutsideTouchable(true);
                popup.showAsDropDown(v);
Run Code Online (Sandbox Code Playgroud)

Cha*_*ham 19

为了让它发挥作用,我必须做些什么:

popup.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, android.R.color.transparent)));
popup.setOutsideTouchable(true);
Run Code Online (Sandbox Code Playgroud)


小智 7

嗯setBackgroundDrawable不要忽略弹出窗口.我认为弹出窗口的默认行为是在外面触摸时解除,但你可以像这样添加onDismiss监听器

popup.setOnDismissListener(new PopupWindow.OnDismissListener() {

    @Override
    public void onDismiss() {
        popup.dismiss();
        // end may TODO anything else                   
    }
});
Run Code Online (Sandbox Code Playgroud)


Way*_* J. 7

你可以试试.

popup.setBackgroundDrawable(new BitmapDrawable(getResources(),
            ""));
Run Code Online (Sandbox Code Playgroud)