2013-10-04 4 views
14

Ich habe ein PopupWindow und ich wollte es zu entlassen, wenn der Benutzer außerhalb berührt, also habe ich untersucht und herausgefunden, dass ich verwenden musste. Das Problem ist, dass der Konstruktor new BitmpaDrawable() veraltet ist. Ich möchte eine Lösung finden, ohne sie zu benutzen.PopupWindow auf Touch außerhalb Popup, ohne veralteten Konstruktor zu verwerfen

Weiß jemand, wie man das löst?

Danke!

   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 (neu ColorDrawable (android.R.color.transparent)); – Petrus

Antwort

7

Hmm setBackgroundDrawable nicht dissmiss Popup-Fenster. Ich denke, dass das Standardverhalten von Popup-Fenster ist zu entlassen bei Berührung außerhalb, aber Sie können onDismiss Listener wie folgt hinzufügen

+0

Ich glaube nicht, dass das Standardverhalten von Popup-Fenstern zu verwerfen ist, wenn ich die Zeile 'popup.setBackgroundDrawable (new BitmapDrawable()) 'nicht benutze;' das Popup wird bei Berührung nicht ausgeblendet. Es tut nur mit dieser Zeile, aber 'new BitmapDrawable()' ist veraltet, so dass ich eine Warnung erhalte, die ich vermeiden möchte. – mario595

+0

Wie zeigen Sie Popup? Wenn Sie es mit popup.showAsDropDown() anzeigen, wenn Sie "popup.dismiss()" aufrufen, wird das Popup-Fenster geschlossen. Überprüfen Sie Ihren Code, ob Sie eine Zeile 'popup.setOutsideTouchable (true)' haben. Und versuchen Sie es mit: popup.setModal (true) – Proxain

+0

Ja, ich benutze 'popup.showAsDropDown (v);'. PopupWindow hat keine Methode 'popup.setModal (true)' – mario595

7

Sie könnten versuchen.

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

Was hatte ich es zu tun bekommen zu arbeiten:

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

Ich habe die gleiche Sache versucht und es funktioniert im Emulator, aber der gleiche Code funktioniert nicht auf dem Gerät. Was kann das Problem sein? – Jaymin

Verwandte Themen