Auto dismiss popups when touches happen outside the popup window

b/18218445

Change-Id: I9f5d0b2bfbc023c1f77967cf14de45e769bdd543
diff --git a/src/com/android/ex/chips/RecipientEditTextView.java b/src/com/android/ex/chips/RecipientEditTextView.java
index 4adaf7a..2e6b94b 100644
--- a/src/com/android/ex/chips/RecipientEditTextView.java
+++ b/src/com/android/ex/chips/RecipientEditTextView.java
@@ -86,6 +86,7 @@
 import android.widget.ListPopupWindow;
 import android.widget.ListView;
 import android.widget.MultiAutoCompleteTextView;
+import android.widget.PopupWindow;
 import android.widget.ScrollView;
 import android.widget.TextView;
 
@@ -266,9 +267,9 @@
             sSelectedTextColor = context.getResources().getColor(android.R.color.white);
         }
         mAlternatesPopup = new ListPopupWindow(context);
-        mAlternatesPopup.setBackgroundDrawable(null);
+        setupPopupWindow(mAlternatesPopup);
         mAddressPopup = new ListPopupWindow(context);
-        mAddressPopup.setBackgroundDrawable(null);
+        setupPopupWindow(mAddressPopup);
         mCopyDialog = new Dialog(context);
         mAlternatesListener = new OnItemClickListener() {
             @Override
@@ -304,6 +305,16 @@
         setDropdownChipLayouter(new DropdownChipLayouter(LayoutInflater.from(context), context));
     }
 
+    private void setupPopupWindow(ListPopupWindow popup) {
+        popup.setModal(true);
+        popup.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                clearSelectedChip();
+            }
+        });
+    }
+
     @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);