web-dev-qa-db-ja.com

非推奨のコンストラクターを使用せずに、ポップアップの外側にタッチすると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);
14
mario595

それを機能させるために私がしなければならなかったこと:

popup.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, Android.R.color.transparent)));
popup.setOutsideTouchable(true);
19
Chad Bingham

あなたは試すことができます。

popup.setBackgroundDrawable(new BitmapDrawable(getResources(),
            ""));
7
Wayne J.

うーんsetBackgroundDrawableはポップアップウィンドウを閉じません。ポップアップウィンドウのデフォルトの動作は、外側に触れると閉じることだと思いますが、そのようなonDismissリスナーを追加することもできます

popup.setOnDismissListener(new PopupWindow.OnDismissListener() {

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