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

时间:2013-10-04 09:41:02

标签: 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);

3 个答案:

答案 0 :(得分:19)

我需要做些什么才能让它发挥作用:

popup.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, android.R.color.transparent)));
popup.setOutsideTouchable(true);

答案 1 :(得分:7)

Hmm setBackgroundDrawable不要忽略弹出窗口。我认为弹出窗口的默认行为是在外面触摸时解除,但你可以像这样添加onDismisslistener

popup.setOnDismissListener(new PopupWindow.OnDismissListener() {

    @Override
    public void onDismiss() {
        popup.dismiss();
        // end may TODO anything else                   
    }
});

答案 2 :(得分:7)

你可以试试。

popup.setBackgroundDrawable(new BitmapDrawable(getResources(),
            ""));