2013-10-04 5 views
14

私はPopupWindowを持っていますが、ユーザが外に触れるとそれを却下したいので、私は調べてpopup.setBackgroundDrawable(new BitmapDrawable());を使用しなければならないことを知りました。問題は、コンストラクタnew BitmpaDrawable()が推奨されなくなりました。私はそれを使用せずに解決策を見つけたいと思います。非推奨のコンストラクタを使用せずにPopupWindowをポップアップの外に閉じる

誰もがこれを解決する方法を知っていますか?

ありがとうございます!

   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); 
+4

popup.setBackgroundDrawable(新しいColorDrawable(android.R.color.transparent)); – Petrus

答えて

7

Hmm setBackgroundDrawableポップアップウィンドウを消さないでください。私は、ポップアップウィンドウのデフォルトの動作は、外に触れる上で却下することであると思いますが、あなたはあなたが試みることができること

popup.setOnDismissListener(new PopupWindow.OnDismissListener() { 

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

私は 'popup.setBackgroundDrawable(new BitmapDrawable());'という行を使わないと、ポップアップウィンドウのデフォルトの動作が却下されるとは思わないが、ポップアップはタッチアウトしても閉じない。それはその行でのみ行いますが、 'new BitmapDrawable()'は廃止予定ですので、避けたいという警告が表示されます。 – mario595

+0

どのようにポップアップを表示しますか?ポップアップウィンドウを閉じる 'popup.dismiss()'を呼び出すときにpopup.showAsDropDown()で表示した場合。あなたのコードに「popup.setOutsideTouchable(true)」という行があるかどうかを確認してください。そして試してみてください:popup.setModal(true) – Proxain

+0

はい、私は 'popup.showAsDropDown(v);'を使用しています。 PopupWindowはメソッド 'popup.setModal(true)'を持っていません – mario595

7

ようonDismissリスナーを追加することができます。私はそれが仕事を得るためにしなければならなかった何

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

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

私は同じことを試みましたが、それはエミュレータで動作していますが、同じコードがデバイス上で動作していません。何が問題なの? – Jaymin

関連する問題