diff --git a/res/layout-sw720dp/quickcontact_activity.xml b/res/layout-sw720dp/quickcontact_activity.xml
index efbb4d1..0499b8e 100644
--- a/res/layout-sw720dp/quickcontact_activity.xml
+++ b/res/layout-sw720dp/quickcontact_activity.xml
@@ -71,5 +71,5 @@
     <!-- This title's maximum height must be less than the minimum size of its
      parent ViewGroup because of an oddity in the way View#setScaleY() works. As a result,
      this title can not be inside @style/quickcontact_header. -->
-    <include layout="@layout/quickcontact_title" />
+    <include layout="@layout/quickcontact_title_and_phoneticname" />
 </com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout/quickcontact_activity.xml b/res/layout/quickcontact_activity.xml
index 6d94fcc..c3b035d 100644
--- a/res/layout/quickcontact_activity.xml
+++ b/res/layout/quickcontact_activity.xml
@@ -49,6 +49,6 @@
     <!-- This title's maximum height must be less than the minimum size of its
          parent ViewGroup because of an oddity in the way View#setScaleY() works. As a result,
          this title can not be inside @style/quickcontact_header. -->
-    <include layout="@layout/quickcontact_title" />
+    <include layout="@layout/quickcontact_title_and_phoneticname" />
 
 </com.android.contacts.widget.MultiShrinkScroller>
\ No newline at end of file
diff --git a/res/layout/quickcontact_activity_landscape.xml b/res/layout/quickcontact_activity_landscape.xml
index 1130ff8..5f3bbc4 100644
--- a/res/layout/quickcontact_activity_landscape.xml
+++ b/res/layout/quickcontact_activity_landscape.xml
@@ -51,7 +51,7 @@
 
                 <include layout="@layout/quickcontact_header" />
 
-                <include layout="@layout/quickcontact_title" />
+                <include layout="@layout/quickcontact_title_and_phoneticname" />
 
             </FrameLayout>
 
diff --git a/res/layout/quickcontact_title.xml b/res/layout/quickcontact_title.xml
deleted file mode 100644
index 3f4886d..0000000
--- a/res/layout/quickcontact_title.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2014 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.
--->
-
-<!-- The importantForAccessibility is set to "no" since we want the ViewGroup that pretends to be
-    this View's parent (contact photo overlay) to provide the content description for Talkback. -->
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:layout_marginStart="@dimen/quickcontact_title_initial_margin"
-    android:layout_marginEnd="@dimen/quickcontact_title_initial_margin"
-    android:layout_marginBottom="@dimen/quickcontact_title_initial_margin"
-    android:layout_gravity="top|start"
-    android:textColor="@color/actionbar_text_color"
-    android:maxLines="@integer/quickcontact_title_lines"
-    android:textSize="@dimen/quickcontact_maximum_title_size"
-    android:textAlignment="viewStart"
-    android:ellipsize="end"
-    android:importantForAccessibility="no"
-    android:id="@+id/large_title"/>
\ No newline at end of file
diff --git a/res/layout/quickcontact_title_and_phoneticname.xml b/res/layout/quickcontact_title_and_phoneticname.xml
new file mode 100644
index 0000000..350c5e9
--- /dev/null
+++ b/res/layout/quickcontact_title_and_phoneticname.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/title_and_phonetic_name"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:layout_marginStart="@dimen/quickcontact_title_initial_margin"
+    android:layout_marginEnd="@dimen/quickcontact_title_initial_margin"
+    android:layout_marginBottom="@dimen/quickcontact_title_initial_bottom_margin">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="top|start"
+        android:textColor="@color/actionbar_text_color"
+        android:maxLines="@integer/quickcontact_title_lines"
+        android:textSize="@dimen/quickcontact_maximum_title_size"
+        android:textAlignment="viewStart"
+        android:ellipsize="end"
+        android:importantForAccessibility="no"
+        android:id="@+id/large_title"/>
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/large_title"
+        android:textColor="@color/actionbar_text_color"
+        android:maxLines="@integer/quickcontact_title_lines"
+        android:textSize="@dimen/quickcontact_maximum_phonetic_name_size"
+        android:textAlignment="viewStart"
+        android:ellipsize="end"
+        android:importantForAccessibility="no"
+        android:id="@+id/phonetic_name"/>
+</LinearLayout>
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
index 67b2514..6e87e97 100644
--- a/res/values-sw720dp/dimens.xml
+++ b/res/values-sw720dp/dimens.xml
@@ -22,10 +22,14 @@
     <dimen name="contact_picker_contact_list_min_height">650dip</dimen>
     <dimen name="list_visible_scrollbar_padding">48dip</dimen>
 
-    <!-- When QC is uncollapsed, the title has this much margin on its left, right and bottom -->
+    <!-- When QC is uncollapsed, the title has this much margin on its left and right -->
     <dimen name="quickcontact_title_initial_margin">32dp</dimen>
+    <!-- When QC is uncollapsed, the title has this much margin on its bottom -->
+    <dimen name="quickcontact_title_initial_bottom_margin">0dp</dimen>
     <!-- Initial size of QuickContact's title size -->
-    <dimen name="quickcontact_maximum_title_size">64dp</dimen>
+    <dimen name="quickcontact_maximum_title_size">56dp</dimen>
+    <!-- Initial size of QuickContact's phonetic name size -->
+    <dimen name="quickcontact_maximum_phonetic_name_size">50dp</dimen>
     <!-- Right margin of the floating action button -->
     <dimen name="floating_action_button_margin_right">100dp</dimen>
 
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 8b0a07e..c57127f 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -19,9 +19,13 @@
     <!-- Initial height of transparent space above QuickContacts -->
     <dimen name="quickcontact_starting_empty_height">150dp</dimen>
     <!-- Initial size of QuickContact's title size -->
-    <dimen name="quickcontact_maximum_title_size">30dp</dimen>
-    <!-- When QC is uncollapsed, the title has this much margin on its left, right and bottom -->
+    <dimen name="quickcontact_maximum_title_size">32dp</dimen>
+    <!-- Initial size of QuickContact's phonetic name size -->
+    <dimen name="quickcontact_maximum_phonetic_name_size">28dp</dimen>
+    <!-- When QC is uncollapsed, the title has this much margin on its left and right. -->
     <dimen name="quickcontact_title_initial_margin">16dp</dimen>
+    <!-- When QC is uncollapsed, the title has this much margin on its bottom -->
+    <dimen name="quickcontact_title_initial_bottom_margin">8dp</dimen>
     <!-- The ratio of width:height for the contact's photo in landscape -->
     <item name="quickcontact_landscape_photo_ratio" type="dimen" format="float">0.7</item>
     <!-- How far QuickContacts can be dragged and released from the top of the window before we dismiss it. -->
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 26f84a8..64d8aec 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -942,15 +942,16 @@
         mPhotoView.setIsBusiness(mContactData.isDisplayNameFromOrganization());
         mPhotoSetter.setupContactPhoto(data, mPhotoView);
         extractAndApplyTintFromPhotoViewAsynchronously();
-        String phoneticName = ContactDisplayUtils.getPhoneticName(this, data);
-        String displayName = ContactDisplayUtils.getDisplayName(this, data).toString();
-        if (mContactData.getDisplayNameSource() != DisplayNameSources.STRUCTURED_PHONETIC_NAME
-                && !TextUtils.isEmpty(phoneticName)) {
-            displayName = getResources().getString(
-                    R.string.quick_contact_display_name_with_phonetic, displayName, phoneticName);
-            setHeaderNameText(displayName);
-        } else {
-            setHeaderNameText(displayName);
+        final String displayName = ContactDisplayUtils.getDisplayName(this, data).toString();
+        setHeaderNameText(displayName);
+        final String phoneticName = ContactDisplayUtils.getPhoneticName(this, data);
+        if (mScroller != null) {
+            if (mContactData.getDisplayNameSource() != DisplayNameSources.STRUCTURED_PHONETIC_NAME
+                    && !TextUtils.isEmpty(phoneticName)) {
+                mScroller.setPhoneticName(phoneticName);
+            } else {
+                mScroller.setPhoneticNameGone();
+            }
         }
 
         Trace.endSection();
diff --git a/src/com/android/contacts/widget/MultiShrinkScroller.java b/src/com/android/contacts/widget/MultiShrinkScroller.java
index 7c46a86..95f277c 100644
--- a/src/com/android/contacts/widget/MultiShrinkScroller.java
+++ b/src/com/android/contacts/widget/MultiShrinkScroller.java
@@ -108,6 +108,8 @@
     private View mTransparentView;
     private MultiShrinkScrollerListener mListener;
     private TextView mLargeTextView;
+    private TextView mPhoneticNameView;
+    private View mTitleAndPhoneticNameView;
     private View mPhotoTouchInterceptOverlay;
     /** Contains desired size & vertical offset of the title, once the header is fully compressed */
     private TextView mInvisiblePlaceholderTextView;
@@ -289,6 +291,8 @@
         mPhotoViewContainer = findViewById(R.id.toolbar_parent);
         mTransparentView = findViewById(R.id.transparent_view);
         mLargeTextView = (TextView) findViewById(R.id.large_title);
+        mPhoneticNameView = (TextView) findViewById(R.id.phonetic_name);
+        mTitleAndPhoneticNameView = findViewById(R.id.title_and_phonetic_name);
         mInvisiblePlaceholderTextView = (TextView) findViewById(R.id.placeholder_textview);
         mStartColumn = findViewById(R.id.empty_start_column);
         // Touching the empty space should close the card
@@ -339,7 +343,7 @@
                 mMaximumPortraitHeaderHeight = mIsTwoPanel ? getHeight()
                         : mPhotoViewContainer.getWidth();
                 setHeaderHeight(getMaximumScrollableHeaderHeight());
-                mMaximumHeaderTextSize = mLargeTextView.getHeight();
+                mMaximumHeaderTextSize = mTitleAndPhoneticNameView.getHeight();
                 if (mIsTwoPanel) {
                     mMaximumHeaderHeight = getHeight();
                     mMinimumHeaderHeight = mMaximumHeaderHeight;
@@ -354,16 +358,19 @@
 
                     // Permanently set title width and margin.
                     final FrameLayout.LayoutParams largeTextLayoutParams
-                            = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
+                            = (FrameLayout.LayoutParams) mTitleAndPhoneticNameView
+                            .getLayoutParams();
                     largeTextLayoutParams.width = photoLayoutParams.width -
                             largeTextLayoutParams.leftMargin - largeTextLayoutParams.rightMargin;
                     largeTextLayoutParams.gravity = Gravity.BOTTOM | Gravity.START;
-                    mLargeTextView.setLayoutParams(largeTextLayoutParams);
+                    mTitleAndPhoneticNameView.setLayoutParams(largeTextLayoutParams);
                 } else {
                     // Set the width of mLargeTextView as if it was nested inside
                     // mPhotoViewContainer.
                     mLargeTextView.setWidth(mPhotoViewContainer.getWidth()
                             - 2 * mMaximumTitleMargin);
+                    mPhoneticNameView.setWidth(mPhotoViewContainer.getWidth()
+                            - 2 * mMaximumTitleMargin);
                 }
 
                 calculateCollapsedLargeTitlePadding();
@@ -382,8 +389,8 @@
                 = (FrameLayout.LayoutParams) mTitleGradientView.getLayoutParams();
         final float TITLE_GRADIENT_SIZE_COEFFICIENT = 1.25f;
         final FrameLayout.LayoutParams largeTextLayoutParms
-                = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
-        titleGradientLayoutParams.height = (int) ((mLargeTextView.getHeight()
+                = (FrameLayout.LayoutParams) mTitleAndPhoneticNameView.getLayoutParams();
+        titleGradientLayoutParams.height = (int) ((mTitleAndPhoneticNameView.getHeight()
                 + largeTextLayoutParms.bottomMargin) * TITLE_GRADIENT_SIZE_COEFFICIENT);
         mTitleGradientView.setLayoutParams(titleGradientLayoutParams);
     }
@@ -393,6 +400,20 @@
         mPhotoTouchInterceptOverlay.setContentDescription(title);
     }
 
+    public void setPhoneticName(String phoneticName) {
+        mPhoneticNameView.setText(phoneticName);
+        // Every time the phonetic name is changed, set mPhoneticNameView as visible,
+        // in case it just changed from Visibility=GONE.
+        mPhoneticNameView.setVisibility(View.VISIBLE);
+        initialize(mListener, mIsOpenContactSquare);
+    }
+
+    public void setPhoneticNameGone() {
+        mPhoneticNameView.setVisibility(View.GONE);
+        // Initialize to make Visibility work.
+        initialize(mListener, mIsOpenContactSquare);
+    }
+
     @Override
     public boolean onInterceptTouchEvent(MotionEvent event) {
         if (mVelocityTracker == null) {
@@ -993,19 +1014,19 @@
 
         // The pivot point for scaling should be middle of the starting side.
         if (getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
-            mLargeTextView.setPivotX(mLargeTextView.getWidth());
+            mTitleAndPhoneticNameView.setPivotX(mTitleAndPhoneticNameView.getWidth());
         } else {
-            mLargeTextView.setPivotX(0);
+            mTitleAndPhoneticNameView.setPivotX(0);
         }
-        mLargeTextView.setPivotY(mLargeTextView.getHeight() / 2);
+        mTitleAndPhoneticNameView.setPivotY(mTitleAndPhoneticNameView.getHeight() / 2);
 
         final int toolbarHeight = mToolbar.getLayoutParams().height;
         mPhotoTouchInterceptOverlay.setClickable(toolbarHeight != mMaximumHeaderHeight);
 
         if (toolbarHeight >= mMaximumHeaderHeight) {
             // Everything is full size when the header is fully expanded.
-            mLargeTextView.setScaleX(1);
-            mLargeTextView.setScaleY(1);
+            mTitleAndPhoneticNameView.setScaleX(1);
+            mTitleAndPhoneticNameView.setScaleY(1);
             setInterpolatedTitleMargins(1);
             return;
         }
@@ -1022,13 +1043,13 @@
         bezierOutput = (float) Math.min(bezierOutput, 1.0f);
         scale = (float) Math.min(scale, 1.0f);
 
-        mLargeTextView.setScaleX(scale);
-        mLargeTextView.setScaleY(scale);
+        mTitleAndPhoneticNameView.setScaleX(scale);
+        mTitleAndPhoneticNameView.setScaleY(scale);
         setInterpolatedTitleMargins(bezierOutput);
     }
 
     /**
-     * Calculate the padding around mLargeTextView so that it will look appropriate once it
+     * Calculate the padding around mTitleAndPhoneticNameView so that it will look appropriate once it
      * finishes moving into its target location/size.
      */
     private void calculateCollapsedLargeTitlePadding() {
@@ -1040,9 +1061,10 @@
         final int desiredTopToCenter = invisiblePlaceHolderLocation[1]
                 + mInvisiblePlaceholderTextView.getHeight() / 2
                 - largeTextViewRectLocation[1];
-        // Padding needed on the mLargeTextView so that it has the same amount of
+        // Padding needed on the mTitleAndPhoneticNameView so that it has the same amount of
         // padding as the target rectangle.
-        mCollapsedTitleBottomMargin = desiredTopToCenter - mLargeTextView.getHeight() / 2;
+        mCollapsedTitleBottomMargin =
+                desiredTopToCenter - mTitleAndPhoneticNameView.getHeight() / 2;
     }
 
     /**
@@ -1051,7 +1073,7 @@
      */
     private void setInterpolatedTitleMargins(float x) {
         final FrameLayout.LayoutParams titleLayoutParams
-                = (FrameLayout.LayoutParams) mLargeTextView.getLayoutParams();
+                = (FrameLayout.LayoutParams) mTitleAndPhoneticNameView.getLayoutParams();
         final LinearLayout.LayoutParams toolbarLayoutParams
                 = (LinearLayout.LayoutParams) mToolbar.getLayoutParams();
 
@@ -1064,14 +1086,14 @@
         final int pretendBottomMargin =  (int) (mCollapsedTitleBottomMargin * (1 - x)
                 + mMaximumTitleMargin * x) ;
         // Calculate how offset the title should be from the top of the screen. Instead of
-        // calling mLargeTextView.getHeight() use the mMaximumHeaderTextSize for this calculation.
-        // The getHeight() value acts unexpectedly when mLargeTextView is partially clipped by
-        // its parent.
+        // calling mTitleAndPhoneticNameView.getHeight() use the mMaximumHeaderTextSize for this
+        // calculation. The getHeight() value acts unexpectedly when mTitleAndPhoneticNameView is
+        // partially clipped by its parent.
         titleLayoutParams.topMargin = getTransparentViewHeight()
                 + toolbarLayoutParams.height - pretendBottomMargin
                 - mMaximumHeaderTextSize;
         titleLayoutParams.bottomMargin = 0;
-        mLargeTextView.setLayoutParams(titleLayoutParams);
+        mTitleAndPhoneticNameView.setLayoutParams(titleLayoutParams);
     }
 
     private void updatePhotoTintAndDropShadow() {
