Отключение 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);

Ответ 1

Что я должен был сделать, чтобы заставить его работать:

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

Ответ 2

Hmm setBackgroundDrawable не рассеивает всплывающее окно. Я думаю, что поведение всплывающего окна по умолчанию - это отклонение при прикосновении к внешней стороне, но вы можете добавить слушателя onDismiss таким образом

popup.setOnDismissListener(new PopupWindow.OnDismissListener() {

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

Ответ 3

Вы можете попробовать.

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