diff --git a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
index 9c60c74..2063c51 100644
--- a/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
+++ b/src/com/android/contacts/quickcontact/ExpandingEntryCardView.java
@@ -170,6 +170,7 @@
     private final Drawable mExpandArrowDrawable;
     private int mThemeColor;
     private ColorFilter mThemeColorFilter;
+    private boolean mIsAlwaysExpanded;
 
     private final OnClickListener mExpandCollapseButtonListener = new OnClickListener() {
         @Override
@@ -212,9 +213,13 @@
      * @param entries The Entry list to display.
      */
     public void initialize(List<List<Entry>> entries, int numInitialVisibleEntries,
-            boolean isExpanded, ExpandingEntryCardViewListener listener) {
+            boolean isExpanded, boolean isAlwaysExpanded,
+            ExpandingEntryCardViewListener listener) {
         LayoutInflater layoutInflater = LayoutInflater.from(getContext());
         mIsExpanded = isExpanded;
+        mIsAlwaysExpanded = isAlwaysExpanded;
+        // If isAlwaysExpanded is true, mIsExpanded should be true
+        mIsExpanded |= mIsAlwaysExpanded;
         mEntryViews = new ArrayList<List<View>>(entries.size());
         mEntries = entries;
         mNumEntries = 0;
@@ -288,7 +293,7 @@
 
         removeView(mExpandCollapseButton);
         if (mCollapsedEntriesCount < mNumEntries
-                && mExpandCollapseButton.getParent() == null) {
+                && mExpandCollapseButton.getParent() == null && !mIsAlwaysExpanded) {
             addView(mExpandCollapseButton, -1);
         }
     }
diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java
index 6ed509d..e74d30f 100644
--- a/src/com/android/contacts/quickcontact/QuickContactActivity.java
+++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java
@@ -807,6 +807,7 @@
             mContactCard.initialize(contactCardEntries,
                     /* numInitialVisibleEntries = */ MIN_NUM_CONTACT_ENTRIES_SHOWN,
                     /* isExpanded = */ false,
+                    /* isAlwaysExpanded = */ false,
                     mExpandingEntryCardViewListener);
             mContactCard.setVisibility(View.VISIBLE);
         } else {
@@ -818,6 +819,7 @@
         mAboutCard.initialize(aboutCardEntries,
                 /* numInitialVisibleEntries = */ 1,
                 /* isExpanded = */ true,
+                /* isAlwaysExpanded = */ true,
                 mExpandingEntryCardViewListener);
 
         if (contactCardEntries.size() == 0 && aboutCardEntries.size() == 0) {
@@ -866,7 +868,7 @@
         final PorterDuffColorFilter greyColorFilter =
                 new PorterDuffColorFilter(subHeaderTextColor, PorterDuff.Mode.SRC_ATOP);
         mNoContactDetailsCard.initialize(promptEntries, 2, /* isExpanded = */ false,
-                mExpandingEntryCardViewListener);
+                /* isAlwaysExpanded = */ true, mExpandingEntryCardViewListener);
         mNoContactDetailsCard.setVisibility(View.VISIBLE);
         mNoContactDetailsCard.setEntryHeaderColor(subHeaderTextColor);
         mNoContactDetailsCard.setColorAndFilter(subHeaderTextColor, greyColorFilter);
@@ -1502,7 +1504,8 @@
         if (allInteractions.size() > 0) {
             mRecentCard.initialize(interactionsWrapper,
                     /* numInitialVisibleEntries = */ MIN_NUM_COLLAPSED_RECENT_ENTRIES_SHOWN,
-                    /* isExpanded = */ false, mExpandingEntryCardViewListener);
+                    /* isExpanded = */ false, /* isAlwaysExpanded = */ false,
+                    mExpandingEntryCardViewListener);
             mRecentCard.setVisibility(View.VISIBLE);
         }
 
