diff --git a/res/layout/drawer_horizontal_divider.xml b/res/layout/drawer_horizontal_divider.xml
index ca096fa..6e77ed8 100644
--- a/res/layout/drawer_horizontal_divider.xml
+++ b/res/layout/drawer_horizontal_divider.xml
@@ -19,6 +19,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="16dp"
+    android:background="@color/navigation_drawer_background_color"
     android:importantForAccessibility="no">
 
     <View
diff --git a/res/layout/nav_drawer_spacer.xml b/res/layout/nav_drawer_spacer.xml
index 45ecfc4..e95f6cd 100644
--- a/res/layout/nav_drawer_spacer.xml
+++ b/res/layout/nav_drawer_spacer.xml
@@ -19,5 +19,5 @@
       android:id="@+id/nav_drawer_spacer"
       android:layout_width="match_parent"
       android:layout_height="@dimen/nav_drawer_spacer_height"
-      android:background="@drawable/drawer_item_background"
+      android:background="@color/navigation_drawer_background_color"
       android:importantForAccessibility="no"/>
\ No newline at end of file
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 00b2810..57ba699 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -276,6 +276,7 @@
                 SharedPreferenceUtil.setHamburgerMenuClickedBefore(PeopleActivity.this);
                 mMenuClickedBefore = true;
             }
+            drawerView.requestFocus();
             invalidateOptionsMenu();
             // Stop search and selection mode like Gmail and Keep. Otherwise, if user switches to
             // another fragment in navigation drawer, the current search/selection mode will be
diff --git a/src/com/android/contacts/drawer/DrawerAdapter.java b/src/com/android/contacts/drawer/DrawerAdapter.java
index fcb41c6..963c125 100644
--- a/src/com/android/contacts/drawer/DrawerAdapter.java
+++ b/src/com/android/contacts/drawer/DrawerAdapter.java
@@ -21,7 +21,6 @@
 import android.support.annotation.LayoutRes;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
@@ -88,7 +87,6 @@
     private List<BaseDrawerItem> mMiscItems = new ArrayList<>();
 
     private List<BaseDrawerItem> mItemsList = new ArrayList<>();
-    private OnClickListener mListener;
     private AccountDisplayInfoFactory mAccountDisplayFactory;
 
     public DrawerAdapter(Activity activity) {
@@ -145,10 +143,6 @@
         mItemsList.add(mNavSpacerItem);
     }
 
-    public void setItemOnClickListener(OnClickListener listener) {
-        mListener = listener;
-    }
-
     public void setGroups(List<GroupListItem> groupListItems, boolean areGroupWritable) {
         final ArrayList<GroupEntryItem> groupEntries = new ArrayList<GroupEntryItem>();
         for (GroupListItem group : groupListItems) {
@@ -228,7 +222,6 @@
     private View getPrimaryItemView(PrimaryItem item, View result, ViewGroup parent) {
         if (result == null) {
             result = mInflater.inflate(R.layout.drawer_primary_item, parent, false);
-            result.setOnClickListener(mListener);
         }
         final TextView titleView = (TextView) result.findViewById(R.id.title);
         titleView.setText(item.text);
@@ -258,7 +251,6 @@
         if (result == null || !(result.getTag() instanceof GroupEntryItem)) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
             result.setId(item.id);
-            result.setOnClickListener(mListener);
         }
 
         final GroupListItem groupListItem = item.group;
@@ -281,7 +273,6 @@
         if (result == null || !(result.getTag() instanceof ContactListFilter)) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
             result.setId(item.id);
-            result.setOnClickListener(mListener);
         }
         final ContactListFilter account = item.account;
         final TextView textView = ((TextView) result.findViewById(R.id.title));
@@ -307,7 +298,6 @@
     private View getDrawerItemView(BaseDrawerItem item, View result, ViewGroup parent) {
         if (result == null) {
             result = mInflater.inflate(R.layout.drawer_item, parent, false);
-            result.setOnClickListener(mListener);
         }
 
         final TextView textView = (TextView) result.findViewById(R.id.title);
diff --git a/src/com/android/contacts/drawer/DrawerFragment.java b/src/com/android/contacts/drawer/DrawerFragment.java
index 6acd170..0aaa262 100644
--- a/src/com/android/contacts/drawer/DrawerFragment.java
+++ b/src/com/android/contacts/drawer/DrawerFragment.java
@@ -31,6 +31,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.WindowInsets;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
 import android.widget.FrameLayout;
 import android.widget.ListView;
 
@@ -154,9 +156,9 @@
         mDrawerListView = (ListView) contentView.findViewById(R.id.list);
         mDrawerAdapter = new DrawerAdapter(getActivity());
         mDrawerAdapter.setSelectedContactsView(mCurrentContactsView);
-        mDrawerAdapter.setItemOnClickListener(mOnDrawerItemClickListener);
         loadGroupsAndFilters();
         mDrawerListView.setAdapter(mDrawerAdapter);
+        mDrawerListView.setOnItemClickListener(mOnDrawerItemClickListener);
 
         if (savedInstanceState != null) {
             final ContactsView contactsView =
@@ -221,13 +223,12 @@
         mListener = null;
     }
 
-    private final View.OnClickListener mOnDrawerItemClickListener = new View.OnClickListener() {
+    private final OnItemClickListener mOnDrawerItemClickListener = new OnItemClickListener() {
         @Override
-        public void onClick(View v) {
+        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
             if (mListener == null) {
                 return;
             }
-            mListener.onDrawerItemClicked();
             final int viewId = v.getId();
             if (viewId == R.id.nav_all_contacts) {
                 mListener.onContactsViewSelected(ContactsView.ALL_CONTACTS);
@@ -252,8 +253,9 @@
             } else if (viewId == R.id.nav_help) {
                 mListener.onLaunchHelpFeedback();
             } else {
-                throw new IllegalStateException("Unknown view");
+                return;
             }
+            mListener.onDrawerItemClicked();
         }
     };
 
