diff --git a/res/layout/filter_spinner.xml b/res/layout/filter_spinner.xml
deleted file mode 100644
index 21c591f..0000000
--- a/res/layout/filter_spinner.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<view
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    class="com.android.contacts.list.FilterSpinnerItemView"
-    android:layout_height="wrap_content"
-    android:layout_width="match_parent"
-    android:gravity="left">
-
-    <ImageView
-        android:id="@+id/icon"
-        android:scaleType="fitCenter"
-        android:layout_width="24dip"
-        android:layout_height="24dip"
-        android:layout_marginLeft="8dip"
-    />
-
-    <TextView
-        android:id="@+id/label"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="8dip"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:gravity="center_vertical"
-        android:ellipsize="end"
-    />
-
-    <ImageView
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_marginLeft="8dip"
-        android:layout_gravity="bottom"
-        android:src="@drawable/filter_selector_corner"
-    />
-</view>
-
diff --git a/res/layout/filter_spinner_item.xml b/res/layout/filter_spinner_item.xml
index b05a019..6573a30 100644
--- a/res/layout/filter_spinner_item.xml
+++ b/res/layout/filter_spinner_item.xml
@@ -16,7 +16,7 @@
 
 <view
     xmlns:android="http://schemas.android.com/apk/res/android"
-    class="com.android.contacts.list.FilterSpinnerItemView"
+    class="com.android.contacts.list.ContactListFilterView"
     android:layout_height="52dip"
     android:layout_width="fill_parent"
     android:paddingLeft="7dip"
diff --git a/res/layout/navigation_bar.xml b/res/layout/navigation_bar.xml
index c90f563..6286b1c 100644
--- a/res/layout/navigation_bar.xml
+++ b/res/layout/navigation_bar.xml
@@ -25,7 +25,8 @@
         android:layout_width="wrap_content"
         android:layout_height="match_parent"
         android:paddingRight="10dip"
-        android:minWidth="240dip">
+        android:minWidth="240dip"
+        android:background="@drawable/filter_selector_background">
         <TextView
             android:id="@+id/search_label"
             android:layout_width="wrap_content"
@@ -34,12 +35,36 @@
             android:gravity="center_vertical" />
 
         <view
-            class="com.android.contacts.widget.NotifyingSpinner"
-            android:id="@+id/filter_spinner"
-            android:layout_width="wrap_content"
+            class="com.android.contacts.list.ContactListFilterView"
+            android:id="@+id/filter_view"
             android:layout_height="match_parent"
-            android:prompt="@string/list_filter_prompt"
-            android:background="@drawable/filter_selector_background" />
+            android:layout_width="match_parent"
+            android:gravity="center_vertical">
+
+            <ImageView
+                android:id="@+id/icon"
+                android:scaleType="fitCenter"
+                android:layout_width="24dip"
+                android:layout_height="24dip"
+                android:layout_marginLeft="8dip" />
+
+            <TextView
+                android:id="@+id/label"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dip"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:gravity="center_vertical"
+                android:ellipsize="end" />
+
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="8dip"
+                android:layout_gravity="bottom"
+                android:src="@drawable/filter_selector_corner" />
+        </view>
+
     </FrameLayout>
 
     <view
diff --git a/res/values-xlarge/styles.xml b/res/values-xlarge/styles.xml
index 1e06a44..8abb44c 100644
--- a/res/values-xlarge/styles.xml
+++ b/res/values-xlarge/styles.xml
@@ -34,6 +34,7 @@
         <item name="list_item_header_text_width">56dip</item>
         <item name="list_item_photo_size">64dip</item>
         <item name="list_item_prefix_highlight_color">#729a27</item>
+        <item name="contact_filter_popup_width">320dip</item>
     </style>
 
     <style name="ContactPickerTheme" parent="@android:Theme.Dialog">
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b8d9c54..71b653a 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -100,6 +100,10 @@
         <item name="android:windowExitAnimation">@anim/dummy_animation</item>
     </style>
 
+    <declare-styleable name="ContactBrowser">
+        <attr name="contact_filter_popup_width" format="dimension"/>
+    </declare-styleable>
+
     <declare-styleable name="ContactListItemView">
         <!-- An attribute that specifies a custom drawable for the pressed state in the contact list-->
         <attr name="pressedBackground" format="reference"/>
@@ -117,7 +121,6 @@
         <attr name="list_item_header_text_width" format="dimension"/>
         <attr name="list_item_photo_size" format="dimension"/>
         <attr name="list_item_prefix_highlight_color" format="color"/>
-
     </declare-styleable>
 
     <declare-styleable name="MultiplePhonePickerItemView">
@@ -142,6 +145,7 @@
         <item name="list_item_header_text_width">56dip</item>
         <item name="list_item_photo_size">56dip</item>
         <item name="list_item_prefix_highlight_color">#729a27</item>
+        <item name="contact_filter_popup_width">320dip</item>
     </style>
 
     <style name="ContactPickerTheme" parent="@android:Theme">
diff --git a/src/com/android/contacts/activities/ActionBarAdapter.java b/src/com/android/contacts/activities/ActionBarAdapter.java
index f2181b3..ec36356 100644
--- a/src/com/android/contacts/activities/ActionBarAdapter.java
+++ b/src/com/android/contacts/activities/ActionBarAdapter.java
@@ -18,8 +18,8 @@
 
 import com.android.contacts.R;
 import com.android.contacts.list.ContactListFilterController;
+import com.android.contacts.list.ContactListFilterView;
 import com.android.contacts.list.ContactsRequest;
-import com.android.contacts.widget.NotifyingSpinner;
 
 import android.app.ActionBar;
 import android.content.Context;
@@ -59,7 +59,7 @@
     private final Context mContext;
 
     private Listener mListener;
-    private NotifyingSpinner mFilterSpinner;
+    private ContactListFilterView mFilterView;
 
     public ActionBarAdapter(Context context) {
         mContext = context;
@@ -80,7 +80,7 @@
         mNavigationBar = LayoutInflater.from(mContext).inflate(R.layout.navigation_bar, null);
         actionBar.setCustomNavigationMode(mNavigationBar);
 
-        mFilterSpinner = (NotifyingSpinner) mNavigationBar.findViewById(R.id.filter_spinner);
+        mFilterView = (ContactListFilterView) mNavigationBar.findViewById(R.id.filter_view);
         mSearchLabel = (TextView) mNavigationBar.findViewById(R.id.search_label);
         mSearchView = (SearchView) mNavigationBar.findViewById(R.id.search_view);
         mSearchView.setIconifiedByDefault(false);
@@ -97,7 +97,7 @@
     }
 
     public void setContactListFilterController(ContactListFilterController controller) {
-        controller.setFilterSpinner(mFilterSpinner);
+        controller.setFilterSpinner(mFilterView);
     }
 
     public boolean isSearchMode() {
@@ -126,10 +126,10 @@
     public void updateVisibility() {
         if (mSearchMode) {
             mSearchLabel.setVisibility(View.VISIBLE);
-            mFilterSpinner.setVisibility(View.GONE);
+            mFilterView.setVisibility(View.GONE);
         } else {
             mSearchLabel.setVisibility(View.GONE);
-            mFilterSpinner.setVisibility(View.VISIBLE);
+            mFilterView.setVisibility(View.VISIBLE);
         }
     }
 
diff --git a/src/com/android/contacts/list/ContactListFilterController.java b/src/com/android/contacts/list/ContactListFilterController.java
index d10faac..d9fddbd 100644
--- a/src/com/android/contacts/list/ContactListFilterController.java
+++ b/src/com/android/contacts/list/ContactListFilterController.java
@@ -16,7 +16,6 @@
 package com.android.contacts.list;
 
 import com.android.contacts.R;
-import com.android.contacts.widget.NotifyingSpinner;
 
 import android.app.Activity;
 import android.app.LoaderManager;
@@ -24,6 +23,7 @@
 import android.content.Context;
 import android.content.Loader;
 import android.content.SharedPreferences;
+import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -31,10 +31,13 @@
 import android.util.SparseArray;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemSelectedListener;
 import android.widget.BaseAdapter;
+import android.widget.ListPopupWindow;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -43,8 +46,8 @@
  * Controls a list of {@link ContactListFilter}'s.
  */
 public class ContactListFilterController
-        implements NotifyingSpinner.SelectionListener, OnItemSelectedListener,
-        LoaderCallbacks<List<ContactListFilter>>{
+        implements
+        LoaderCallbacks<List<ContactListFilter>>, OnClickListener, OnItemClickListener {
 
     public interface ContactListFilterListener {
         void onContactListFiltersLoaded();
@@ -64,12 +67,13 @@
     private Context mContext;
     private LoaderManager mLoaderManager;
     private ContactListFilterListener mListener;
-
+    private ListPopupWindow mPopup;
+    private int mPopupWidth = -1;
     private SparseArray<ContactListFilter> mFilters;
     private ArrayList<ContactListFilter> mFilterList;
     private int mNextFilterId = 1;
-    private NotifyingSpinner mFilterSpinner;
-    private FilterSpinnerAdapter mFilterSpinnerAdapter;
+    private ContactListFilterView mFilterView;
+    private FilterListAdapter mFilterListAdapter;
     private ContactListFilter mFilter;
     private boolean mFiltersLoaded;
     private final Handler mHandler = new Handler() {
@@ -91,9 +95,9 @@
         mListener = listener;
     }
 
-    public void setFilterSpinner(NotifyingSpinner filterSpinner) {
-        mFilterSpinner = filterSpinner;
-        mFilterSpinner.setOnItemSelectedListener(this);
+    public void setFilterSpinner(ContactListFilterView filterSpinner) {
+        mFilterView = filterSpinner;
+        mFilterView.setOnClickListener(this);
     }
 
     public ContactListFilter getFilter() {
@@ -104,14 +108,6 @@
         return mFilterList;
     }
 
-    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-        setContactListFilter((int) id);
-    }
-
-    public void onNothingSelected(AdapterView<?> parent) {
-        setContactListFilter(0);
-    }
-
     public boolean isLoaded() {
         return mFiltersLoaded;
     }
@@ -193,11 +189,10 @@
             mFilter = getDefaultFilter();
         }
 
-        if (mFilterSpinnerAdapter == null) {
-            mFilterSpinnerAdapter = new FilterSpinnerAdapter();
-            mFilterSpinner.setAdapter(mFilterSpinnerAdapter);
+        if (mFilterListAdapter == null) {
+            mFilterListAdapter = new FilterListAdapter();
         } else {
-            mFilterSpinnerAdapter.notifyDataSetChanged();
+            mFilterListAdapter.notifyDataSetChanged();
         }
 
         if (filterChanged) {
@@ -240,10 +235,38 @@
     }
 
     @Override
-    public void onSetSelection(NotifyingSpinner spinner, int position) {
-        ContactListFilter filter = mFilters.valueAt(position);
-        if (filter.filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
+    public void onClick(View v) {
+        if (!mFiltersLoaded) {
+            return;
+        }
+
+        if (mPopupWidth == -1) {
+            TypedArray a = mContext.obtainStyledAttributes(null, R.styleable.ContactBrowser);
+            mPopupWidth = a.getDimensionPixelSize(
+                    R.styleable.ContactBrowser_contact_filter_popup_width, -1);
+            a.recycle();
+
+            if (mPopupWidth == -1) {
+                mPopupWidth = mFilterView.getWidth();
+            }
+        }
+
+        mPopup = new ListPopupWindow(mContext, null);
+        mPopup.setWidth(mPopupWidth);
+        mPopup.setAdapter(mFilterListAdapter);
+        mPopup.setAnchorView(mFilterView);
+        mPopup.setOnItemClickListener(this);
+        mPopup.setModal(true);
+        mPopup.show();
+    }
+
+    @Override
+    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+        mPopup.dismiss();
+        if (mFilters.get((int) id).filterType == ContactListFilter.FILTER_TYPE_CUSTOM) {
             mListener.onContactListFilterCustomizationRequest();
+        } else {
+            setContactListFilter((int) id);
         }
     }
 
@@ -259,24 +282,15 @@
 
     protected void updateFilterView() {
         if (mFiltersLoaded) {
-            mFilterSpinner.setSetSelectionListener(null);
-            if (mFilter != null && mFilters != null) {
-                int size = mFilters.size();
-                for (int i = 0; i < size; i++) {
-                    if (mFilters.valueAt(i).equals(mFilter)) {
-                        mFilterSpinner.setSelection(i);
-                        break;
-                    }
-                }
-            }
-            mFilterSpinner.setSetSelectionListener(this);
+            mFilterView.setContactListFilter(mFilter);
+            mFilterView.bindView(false);
         }
     }
 
-    private class FilterSpinnerAdapter extends BaseAdapter {
+    private class FilterListAdapter extends BaseAdapter {
         private LayoutInflater mLayoutInflater;
 
-        public FilterSpinnerAdapter() {
+        public FilterListAdapter() {
             mLayoutInflater = LayoutInflater.from(mContext);
         }
 
@@ -295,31 +309,16 @@
             return mFilters.valueAt(position);
         }
 
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            return getView(position, convertView, parent, true);
-        }
-
-        @Override
         public View getView(int position, View convertView, ViewGroup parent) {
-            return getView(position, convertView, parent, false);
-        }
-
-        public View getView(int position, View convertView, ViewGroup parent, boolean dropdown) {
-            FilterSpinnerItemView view;
-            if (dropdown) {
-                if (convertView != null) {
-                    view = (FilterSpinnerItemView) convertView;
-                } else {
-                    view = (FilterSpinnerItemView) mLayoutInflater.inflate(
-                            R.layout.filter_spinner_item, parent, false);
-                }
+            ContactListFilterView view;
+            if (convertView != null) {
+                view = (ContactListFilterView) convertView;
             } else {
-                view = (FilterSpinnerItemView) mLayoutInflater.inflate(
-                        R.layout.filter_spinner, parent, false);
+                view = (ContactListFilterView) mLayoutInflater.inflate(
+                        R.layout.filter_spinner_item, parent, false);
             }
             view.setContactListFilter(mFilters.valueAt(position));
-            view.bindView(dropdown);
+            view.bindView(true);
             return view;
         }
     }
diff --git a/src/com/android/contacts/list/FilterSpinnerItemView.java b/src/com/android/contacts/list/ContactListFilterView.java
similarity index 94%
rename from src/com/android/contacts/list/FilterSpinnerItemView.java
rename to src/com/android/contacts/list/ContactListFilterView.java
index 32a9ad0..8d0bf3b 100644
--- a/src/com/android/contacts/list/FilterSpinnerItemView.java
+++ b/src/com/android/contacts/list/ContactListFilterView.java
@@ -28,18 +28,18 @@
 /**
  * Contact list filter parameters.
  */
-public final class FilterSpinnerItemView extends LinearLayout {
+public class ContactListFilterView extends LinearLayout {
 
     private ImageView mIcon;
     private TextView mLabel;
     private TextView mIndentedLabel;
     private ContactListFilter mFilter;
 
-    public FilterSpinnerItemView(Context context) {
+    public ContactListFilterView(Context context) {
         super(context);
     }
 
-    public FilterSpinnerItemView(Context context, AttributeSet attrs) {
+    public ContactListFilterView(Context context, AttributeSet attrs) {
         super(context, attrs);
     }
 
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index ca93e0c..4028a7e 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -303,7 +303,7 @@
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == REQUEST_CODE_CUSTOMIZE_FILTER && resultCode == Activity.RESULT_OK) {
+        if (requestCode == REQUEST_CODE_CUSTOMIZE_FILTER) {
             mFilterController.selectCustomFilter();
         }
     }
