diff --git a/res/anim/slide_in.xml b/res/anim/slide_in.xml
index b0eed37..4463f2f 100644
--- a/res/anim/slide_in.xml
+++ b/res/anim/slide_in.xml
@@ -15,6 +15,6 @@
 -->
 <translate xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@interpolator/ease_in_interpolator"
-    android:duration="532"
+    android:duration="@integer/dialpad_slide_in_duration"
     android:fromYDelta="67%p"
     android:toYDelta="0" />
\ No newline at end of file
diff --git a/res/anim/slide_out.xml b/res/anim/slide_out.xml
index 231555e..88687f4 100644
--- a/res/anim/slide_out.xml
+++ b/res/anim/slide_out.xml
@@ -15,6 +15,6 @@
 -->
 <translate xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@interpolator/ease_out_interpolator"
-    android:duration="257"
+    android:duration="@integer/dialpad_slide_out_duration"
     android:fromYDelta="0"
     android:toYDelta="80%p" />
\ No newline at end of file
diff --git a/res/layout/search_edittext.xml b/res/layout/search_edittext.xml
index 50cbf5a..ac1114e 100644
--- a/res/layout/search_edittext.xml
+++ b/res/layout/search_edittext.xml
@@ -9,18 +9,28 @@
     android:layout_marginBottom="@dimen/search_bottom_margin"
     android:layout_marginLeft="@dimen/search_margin_horizontal"
     android:layout_marginRight="@dimen/search_margin_horizontal"
-    android:paddingLeft="@dimen/search_box_left_padding"
-    android:paddingRight="@dimen/search_box_right_padding"
     android:background="@drawable/rounded_corner"
-    android:elevation="@dimen/search_box_elevation"
-    >
+    android:elevation="@dimen/search_box_elevation">
+
     <LinearLayout
         android:id="@+id/search_box_collapsed"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:paddingStart="@dimen/search_box_left_padding"
+        android:paddingEnd="@dimen/search_box_right_padding"
         android:gravity="center_vertical"
         android:orientation="horizontal" >
 
+        <ImageView
+            android:id="@+id/search_magnifying_glass"
+            android:layout_height="@dimen/search_box_icon_size"
+            android:layout_width="@dimen/search_box_icon_size"
+            android:layout_margin="@dimen/search_box_icon_margin"
+            android:padding="@dimen/search_box_search_icon_padding"
+            android:src="@drawable/ic_ab_search"
+            android:importantForAccessibility="no"
+            android:tint="@color/searchbox_icon_tint" />
+
         <!-- Portion of the search box that starts a search when clicked -->
         <LinearLayout
             android:id="@+id/search_box_start_search"
@@ -29,21 +39,11 @@
             android:layout_weight="1"
             android:gravity="center_vertical" >
 
-            <ImageView
-                android:id="@+id/search_magnifying_glass"
-                android:layout_height="@dimen/search_box_icon_size"
-                android:layout_width="@dimen/search_box_icon_size"
-                android:layout_margin="@dimen/search_box_icon_margin"
-                android:padding="@dimen/search_box_search_icon_padding"
-                android:src="@drawable/ic_ab_search"
-                android:importantForAccessibility="no"
-                android:tint="@color/searchbox_icon_tint" />
-
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="@dimen/search_box_icon_size"
-                android:layout_marginLeft="@dimen/search_box_text_left_margin"
-                android:textSize="@dimen/search_text_size"
+                android:layout_marginLeft="@dimen/search_box_collapsed_text_margin_left"
+                android:textSize="@dimen/search_collapsed_text_size"
                 android:fontFamily="@string/search_font_family"
                 android:textColor="@color/searchbox_text_color"
                 android:textColorHint="@color/searchbox_hint_text_color"
@@ -88,7 +88,7 @@
             android:id="@+id/search_back_button"
             android:layout_width="@dimen/search_box_icon_size"
             android:layout_height="@dimen/search_box_icon_size"
-            android:layout_margin="@dimen/search_box_icon_margin"
+            android:layout_marginLeft="8dp"
             android:src="@drawable/ic_back_arrow"
             android:background="?android:attr/selectableItemBackground"
             android:contentDescription="@string/action_menu_overflow_description"
@@ -97,10 +97,10 @@
         <EditText
             android:id="@+id/search_view"
             android:layout_width="0dp"
-            android:layout_height="@dimen/search_box_icon_size"
+            android:layout_height="@dimen/action_bar_height"
             android:layout_weight="1"
-            android:layout_marginLeft="@dimen/search_box_text_left_margin"
-            android:textSize="@dimen/search_text_size"
+            android:layout_marginLeft="@dimen/search_box_expanded_text_margin_left"
+            android:textSize="@dimen/search_expanded_text_size"
             android:fontFamily="@string/search_font_family"
             android:textColor="@color/searchbox_text_color"
             android:inputType="textFilter" />
@@ -109,7 +109,7 @@
             android:id="@+id/search_close_button"
             android:layout_height="@dimen/search_box_icon_size"
             android:layout_width="@dimen/search_box_icon_size"
-            android:layout_margin="@dimen/search_box_icon_margin"
+            android:layout_marginRight="8dp"
             android:src="@drawable/ic_close_dk"
             android:clickable="true"
             android:background="?android:attr/selectableItemBackground"
diff --git a/res/values/animation_constants.xml b/res/values/animation_constants.xml
index 7863060..05b8e21 100644
--- a/res/values/animation_constants.xml
+++ b/res/values/animation_constants.xml
@@ -16,6 +16,8 @@
   -->
 <resources>
     <integer name="fade_duration">300</integer>
+    <integer name="dialpad_slide_in_duration">532</integer>
+    <integer name="dialpad_slide_out_duration">257</integer>
 
     <!-- Swipe constants -->
     <integer name="swipe_escape_velocity">100</integer>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e659f57..6efb5ac 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -16,9 +16,6 @@
 -->
 <resources>
 
-    <!--  Search View -->
-    <dimen name="search_text_size">14sp</dimen>
-
     <!--
           Drag to remove view (in dp because it is used in conjunction with a statically
           sized icon
@@ -106,8 +103,8 @@
     <dimen name="search_top_margin">8dp</dimen>
     <!-- Margin below the search box. -->
     <dimen name="search_bottom_margin">8dp</dimen>
-    <!-- Search box text size -->
-    <dimen name="search_text_size">13.24sp</dimen>
+    <dimen name="search_collapsed_text_size">14sp</dimen>
+    <dimen name="search_expanded_text_size">20sp</dimen>
     <!-- Search box interior padding - left -->
     <dimen name="search_box_left_padding">8dp</dimen>
     <!-- Search box interior padding - right -->
@@ -115,11 +112,11 @@
     <!-- Padding around the icon in the search box. -->
     <dimen name="search_box_icon_margin">4dp</dimen>
     <dimen name="search_box_search_icon_padding">4dp</dimen>
-    <!-- Left margin of the text field in the search box. -->
-    <dimen name="search_box_text_left_margin">27dp</dimen>
+    <dimen name="search_box_collapsed_text_margin_left">24dp</dimen>
+    <dimen name="search_box_expanded_text_margin_left">26dp</dimen>
     <!-- Size of the icon (voice search, close search) in the search box. -->
     <dimen name="search_box_icon_size">28dp</dimen>
-    <!-- Elevation of the search box -->
+    <dimen name="search_list_padding_top">8dp</dimen>
     <dimen name="search_box_elevation">3dp</dimen>
 
     <!-- Size of text in tabs. -->
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index df2a87c..26c1698 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -141,8 +141,6 @@
 
     private static final int ACTIVITY_REQUEST_CODE_VOICE_SEARCH = 1;
 
-    private static final int ANIMATION_DURATION = 250;
-
     private RelativeLayout parentLayout;
 
     /**
@@ -206,8 +204,6 @@
      */
     private View mRemoveViewContainer;
 
-    final Interpolator hideActionBarInterpolator = new AccelerateInterpolator(1.5f);
-    final Interpolator showActionBarInterpolator = new DecelerateInterpolator(1.5f);
     private String mSearchQuery;
 
     private DialerDatabaseHelper mDialerDatabaseHelper;
@@ -662,7 +658,6 @@
     }
 
     private void updateSearchFragmentPosition() {
-        int translationValue = mIsDialpadShown ?  -mActionBarHeight : 0;
         SearchFragment fragment = null;
         if (mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()) {
             fragment = mSmartDialSearchFragment;
@@ -670,8 +665,7 @@
             fragment = mRegularSearchFragment;
         }
         if (fragment != null && fragment.isVisible()) {
-            fragment.getView().animate().translationY(translationValue)
-                    .setInterpolator(hideActionBarInterpolator).setDuration(ANIMATION_DURATION);
+            fragment.updatePosition(true /* animate */);
         }
     }
 
@@ -1145,6 +1139,10 @@
         return mActionBarController.isActionBarShowing();
     }
 
+    public boolean isDialpadShown() {
+        return mIsDialpadShown;
+    }
+
     @Override
     public int getActionBarHideOffset() {
         return getActionBar().getHideOffset();
diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java
index 9a30c4d..9e2b8d0 100644
--- a/src/com/android/dialer/list/SearchFragment.java
+++ b/src/com/android/dialer/list/SearchFragment.java
@@ -17,13 +17,16 @@
 
 import android.app.Activity;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
+import android.view.animation.Interpolator;
 import android.widget.AbsListView;
 import android.widget.AbsListView.OnScrollListener;
 import android.widget.ListView;
 
+import com.android.contacts.common.animation.AnimUtils;
 import com.android.contacts.common.list.ContactEntryListAdapter;
 import com.android.contacts.common.list.ContactListItemView;
 import com.android.contacts.common.list.OnPhoneNumberPickerActionListener;
@@ -31,7 +34,6 @@
 import com.android.contacts.common.util.ViewUtil;
 import com.android.dialer.DialtactsActivity;
 import com.android.dialer.R;
-import com.android.dialer.list.OnListFragmentScrolledListener;
 import com.android.dialer.util.DialerUtils;
 
 public class SearchFragment extends PhoneNumberPickerFragment {
@@ -44,9 +46,16 @@
      */
     private String mAddToContactNumber;
     private int mActionBarHeight;
+    private int mShadowHeight;
+    private int mPaddingTop;
+    private int mShowDialpadDuration;
+    private int mHideDialpadDuration;
+
+    private HostInterface mActivity;
 
     public interface HostInterface {
         public boolean isActionBarShowing();
+        public boolean isDialpadShown();
         public int getActionBarHideOffset();
         public int getActionBarHeight();
     }
@@ -75,9 +84,14 @@
             getAdapter().setHasHeader(0, false);
         }
 
-        HostInterface activity = (HostInterface) getActivity();
+        mActivity = (HostInterface) getActivity();
 
-        mActionBarHeight = activity.getActionBarHeight();
+        final Resources res = getResources();
+        mActionBarHeight = mActivity.getActionBarHeight();
+        mShadowHeight  = res.getDrawable(R.drawable.search_shadow).getIntrinsicHeight();
+        mPaddingTop = res.getDimensionPixelSize(R.dimen.search_list_padding_top);
+        mShowDialpadDuration = res.getInteger(R.integer.dialpad_slide_in_duration);
+        mHideDialpadDuration = res.getInteger(R.integer.dialpad_slide_out_duration);
 
         final View parentView = getView();
         parentView.setPaddingRelative(
@@ -88,6 +102,7 @@
 
         final ListView listView = getListView();
 
+        listView.setClipToPadding(false);
         listView.setOnScrollListener(new OnScrollListener() {
             @Override
             public void onScrollStateChanged(AbsListView view, int scrollState) {
@@ -100,10 +115,7 @@
             }
         });
 
-
-        if (!activity.isActionBarShowing()) {
-            parentView.setTranslationY(-mActionBarHeight);
-        }
+        updatePosition(false /* animate */);
     }
 
     @Override
@@ -155,4 +167,36 @@
                     R.string.add_contact_not_available);
         }
     }
+
+    /**
+     * Updates the position and padding of the search fragment, depending on whether the dialpad is
+     * shown. This can be optionally animated.
+     * @param animate
+     */
+    public void updatePosition(boolean animate) {
+        // Use negative shadow height instead of 0 to account for the 9-patch's shadow.
+        int translationValue = mActivity.isDialpadShown() ? -mActionBarHeight : -mShadowHeight;
+
+        if (animate) {
+            Interpolator interpolator =
+                    mActivity.isDialpadShown() ? AnimUtils.EASE_IN : AnimUtils.EASE_OUT ;
+            int duration =
+                    mActivity.isDialpadShown() ? mShowDialpadDuration : mHideDialpadDuration;
+            getView().animate()
+                    .translationY(translationValue)
+                    .setInterpolator(interpolator)
+                    .setDuration(duration);
+        } else {
+            getView().setTranslationY(translationValue);
+        }
+
+        // There is padding which should only be applied when the dialpad is not shown.
+        int paddingTop = mActivity.isDialpadShown() ? 0 : mPaddingTop;
+        final ListView listView = getListView();
+        listView.setPaddingRelative(
+                listView.getPaddingStart(),
+                paddingTop,
+                listView.getPaddingEnd(),
+                listView.getPaddingBottom());
+    }
 }
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index dbb2b22..d229aa4 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -19,6 +19,7 @@
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
 import android.content.Context;
+import android.graphics.Color;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
 import android.view.View;
@@ -30,6 +31,7 @@
 import com.android.dialer.R;
 
 public class SearchEditTextLayout extends FrameLayout {
+    private static final float EXPAND_MARGIN_FRACTION_START = 0.8f;
     private static final int ANIMATION_DURATION = 200;
 
     private OnKeyListener mPreImeKeyListener;
@@ -47,6 +49,11 @@
     private View mCollapsed;
     private View mExpanded;
     private EditText mSearchView;
+    private View mCollapsedSearchBox;
+    private View mVoiceSearchButtonView;
+    private View mOverflowButtonView;
+    private View mBackButtonView;
+    private View mClearButtonView;
 
     private ValueAnimator mAnimator;
 
@@ -85,6 +92,12 @@
         mExpanded = findViewById(R.id.search_box_expanded);
         mSearchView = (EditText) mExpanded.findViewById(R.id.search_view);
 
+        mCollapsedSearchBox = findViewById(R.id.search_box_start_search);
+        mVoiceSearchButtonView = findViewById(R.id.voice_search_button);
+        mOverflowButtonView = findViewById(R.id.dialtacts_options_menu_button);
+        mBackButtonView = findViewById(R.id.search_back_button);
+        mClearButtonView = findViewById(R.id.search_close_button);
+
         mSearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
             @Override
             public void onFocusChange(View v, boolean hasFocus) {
@@ -149,9 +162,16 @@
         }
     }
     public void expand(boolean animate, boolean requestFocus) {
+        mCollapsedSearchBox.setVisibility(View.GONE);
+        mVoiceSearchButtonView.setVisibility(View.GONE);
+        mOverflowButtonView.setVisibility(View.GONE);
+        mBackButtonView.setVisibility(View.VISIBLE);
+        mClearButtonView.setVisibility(View.VISIBLE);
+
         if (animate) {
             AnimUtils.crossFadeViews(mExpanded, mCollapsed, ANIMATION_DURATION);
-            mAnimator = ValueAnimator.ofFloat(1f, 0f);
+            mAnimator = ValueAnimator.ofFloat(EXPAND_MARGIN_FRACTION_START, 0f);
+            setMargins(EXPAND_MARGIN_FRACTION_START);
             prepareAnimator(true);
         } else {
             mExpanded.setVisibility(View.VISIBLE);
@@ -169,6 +189,12 @@
     }
 
     public void collapse(boolean animate) {
+        mCollapsedSearchBox.setVisibility(View.VISIBLE);
+        mVoiceSearchButtonView.setVisibility(View.VISIBLE);
+        mOverflowButtonView.setVisibility(View.VISIBLE);
+        mBackButtonView.setVisibility(View.GONE);
+        mClearButtonView.setVisibility(View.GONE);
+
         if (animate) {
             AnimUtils.crossFadeViews(mCollapsed, mExpanded, ANIMATION_DURATION);
             mAnimator = ValueAnimator.ofFloat(0f, 1f);
