diff --git a/res/layout/compact_contact_editor_fragment.xml b/res/layout/compact_contact_editor_fragment.xml
index 58f426b..6eb32a7 100644
--- a/res/layout/compact_contact_editor_fragment.xml
+++ b/res/layout/compact_contact_editor_fragment.xml
@@ -65,6 +65,37 @@
                 android:layout_height="wrap_content"
                 android:orientation="vertical"/>
 
+        <LinearLayout
+                style="@style/SelectableItem"
+                android:id="@+id/more_fields"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="vertical" >
+
+            <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/divider_line_height"
+                    android:background="@color/divider_line_color_light" />
+
+            <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingEnd="@dimen/expanding_entry_card_item_image_spacing"
+                    android:gravity="center_vertical"
+                    android:paddingBottom="@dimen/expanding_entry_card_button_padding_vertical"
+                    android:paddingTop="@dimen/expanding_entry_card_button_padding_vertical"
+                    android:text="@string/compact_editor_more_fields"
+                    android:textAlignment="textEnd"
+                    android:textColor="@color/expanding_entry_card_button_text_color"
+                    android:textSize="@dimen/expanding_entry_card_title_text_size" />
+
+            <View
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/divider_line_height"
+                    android:background="@color/divider_line_color_light" />
+
+        </LinearLayout>
+
     </com.android.contacts.editor.CompactRawContactsEditorView>
 
 </ScrollView>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1324317..30a6525 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -734,4 +734,7 @@
 
     <!-- When a user tries to create an IM Hangouts field, an alert dialog pops up displaying this message. We don't want users entering email addresses of phone numbers into the IM field. [CHAR LIMIT=200] -->
     <string name="contact_editor_hangouts_im_alert">Hangouts works better when you enter the person\'s Hangouts identifier into the email field or phone field.</string>
+
+    <!-- Button to expand the compact contact editor to show all available input fields. [CHAR LIMIT=60] -->
+    <string name="compact_editor_more_fields">More Fields</string>
 </resources>
diff --git a/src/com/android/contacts/editor/CompactContactEditorFragment.java b/src/com/android/contacts/editor/CompactContactEditorFragment.java
index 8294365..425f7ce 100644
--- a/src/com/android/contacts/editor/CompactContactEditorFragment.java
+++ b/src/com/android/contacts/editor/CompactContactEditorFragment.java
@@ -28,11 +28,13 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.Toast;
 
 /**
  * Contact editor with only the most important fields displayed initially.
  */
-public class CompactContactEditorFragment extends ContactEditorBaseFragment {
+public class CompactContactEditorFragment extends ContactEditorBaseFragment implements
+        CompactRawContactsEditorView.Listener {
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
@@ -59,6 +61,7 @@
         }
 
         CompactRawContactsEditorView editorView = (CompactRawContactsEditorView) mContent;
+        editorView.setListener(this);
         editorView.setState(mState, mViewIdGenerator);
         editorView.setEnabled(isEnabled());
         editorView.setVisibility(View.VISIBLE);
@@ -114,4 +117,9 @@
                 CompactContactEditorActivity.ACTION_JOIN_COMPLETED);
         mContext.startService(intent);
     }
+
+    @Override
+    public void onExpandEditor() {
+        Toast.makeText(mContext, "Not yet implemented", Toast.LENGTH_SHORT).show();
+    }
 }
diff --git a/src/com/android/contacts/editor/CompactRawContactsEditorView.java b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
index d8dea60..363fe8b 100644
--- a/src/com/android/contacts/editor/CompactRawContactsEditorView.java
+++ b/src/com/android/contacts/editor/CompactRawContactsEditorView.java
@@ -48,10 +48,23 @@
  * View to display information from multiple {@link RawContactDelta}s grouped together
  * (e.g. all the phone numbers from a {@link com.android.contacts.common.model.Contact} together.
  */
-public class CompactRawContactsEditorView extends LinearLayout {
+public class CompactRawContactsEditorView extends LinearLayout implements View.OnClickListener {
 
     private static final String TAG = "CompactEditorView";
 
+    /**
+     * Callbacks for hosts of {@link CompactRawContactsEditorView}s.
+     */
+    public interface Listener {
+
+        /**
+         * Invoked when the compact editor should be expanded to show all fields.
+         */
+        public void onExpandEditor();
+    }
+
+    private Listener mListener;
+
     private AccountTypeManager mAccountTypeManager;
     private LayoutInflater mLayoutInflater;
     private ViewIdGenerator mViewIdGenerator;
@@ -62,6 +75,7 @@
     private ViewGroup mPhoneNumbers;
     private ViewGroup mEmails;
     private ViewGroup mOther;
+    private View mMoreFields;
 
     public CompactRawContactsEditorView(Context context) {
         super(context);
@@ -71,6 +85,13 @@
         super(context, attrs);
     }
 
+    /**
+     * Sets the receiver for {@link CompactRawContactsEditorView} callbacks.
+     */
+    public void setListener(Listener listener) {
+        mListener = listener;
+    }
+
     @Override
     protected void onFinishInflate() {
         super.onFinishInflate();
@@ -85,6 +106,16 @@
         mPhoneNumbers = (LinearLayout) findViewById(R.id.phone_numbers);
         mEmails = (LinearLayout) findViewById(R.id.emails);
         mOther = (LinearLayout) findViewById(R.id.other);
+        mMoreFields = findViewById(R.id.more_fields);
+        mMoreFields.setOnClickListener(this);
+    }
+
+
+    @Override
+    public void onClick(View view) {
+        if (view.getId() == R.id.more_fields && mListener != null ) {
+            mListener.onExpandEditor();
+        }
     }
 
     @Override
