diff --git a/res/layout-xlarge-land/contact_detail_list_item.xml b/res/layout-xlarge-land/contact_detail_list_item.xml
index 326e7b6..9ad0e1b 100644
--- a/res/layout-xlarge-land/contact_detail_list_item.xml
+++ b/res/layout-xlarge-land/contact_detail_list_item.xml
@@ -63,7 +63,7 @@
                     android:id="@+id/data"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textAppearance="?android:attr/textAppearanceLarge" />
+                    android:textAppearance="?android:attr/textAppearanceMedium" />
 
                 <TextView
                     android:id="@+id/footer"
diff --git a/res/layout-xlarge/edit_spinner.xml b/res/layout-xlarge/edit_spinner.xml
new file mode 100644
index 0000000..f1909fe
--- /dev/null
+++ b/res/layout-xlarge/edit_spinner.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<!-- Spinner for a field in the contact editor. -->
+
+<Spinner
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/spinner"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginLeft="@dimen/editor_field_left_padding"
+    android:textAppearance="?android:attr/textAppearanceLarge"
+    android:paddingLeft="5dip"
+    android:paddingTop="5dip"/>
\ No newline at end of file
diff --git a/res/layout-xlarge/event_field_editor_view.xml b/res/layout-xlarge/event_field_editor_view.xml
index 2deb551..c9eef08 100644
--- a/res/layout-xlarge/event_field_editor_view.xml
+++ b/res/layout-xlarge/event_field_editor_view.xml
@@ -24,10 +24,6 @@
     android:orientation="vertical">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
         android:id="@+id/title"
         layout="@layout/edit_field_title" />
 
@@ -36,7 +32,7 @@
         android:layout_height="wrap_content"
         android:layout_weight="1"
         android:orientation="horizontal"
-        android:gravity="center_vertical"
+        android:gravity="bottom"
         android:focusable="true"
         android:clickable="true">
 
@@ -47,6 +43,7 @@
         <include
             android:id="@+id/spinner"
             layout="@layout/edit_spinner"
+            android:paddingTop="15dip"
             android:visibility="gone" />
 
         <include
diff --git a/res/layout-xlarge/item_kind_section.xml b/res/layout-xlarge/item_kind_section.xml
index 5ca85a9..f0ae1dc 100644
--- a/res/layout-xlarge/item_kind_section.xml
+++ b/res/layout-xlarge/item_kind_section.xml
@@ -20,6 +20,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:paddingBottom="@dimen/editor_field_bottom_padding"
     android:orientation="vertical">
 
     <View
diff --git a/res/layout-xlarge/phonetic_name_editor_view.xml b/res/layout-xlarge/phonetic_name_editor_view.xml
index be36915..c3fa6a3 100644
--- a/res/layout-xlarge/phonetic_name_editor_view.xml
+++ b/res/layout-xlarge/phonetic_name_editor_view.xml
@@ -27,14 +27,6 @@
     android:layout_marginBottom="4dip">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
-        android:id="@+id/title"
-        layout="@layout/edit_field_title" />
-
-    <include
         android:id="@+id/spinner"
         layout="@layout/edit_spinner"
         android:visibility="gone" />
diff --git a/res/layout-xlarge/structured_name_editor_view.xml b/res/layout-xlarge/structured_name_editor_view.xml
index 87f788a..37b5536 100644
--- a/res/layout-xlarge/structured_name_editor_view.xml
+++ b/res/layout-xlarge/structured_name_editor_view.xml
@@ -27,14 +27,6 @@
     android:layout_marginBottom="4dip">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
-        android:id="@+id/title"
-        layout="@layout/edit_field_title" />
-
-    <include
         android:id="@+id/spinner"
         layout="@layout/edit_spinner"
         android:visibility="gone" />
diff --git a/res/layout-xlarge/text_fields_editor_view.xml b/res/layout-xlarge/text_fields_editor_view.xml
index 5e77a97..8be354b 100644
--- a/res/layout-xlarge/text_fields_editor_view.xml
+++ b/res/layout-xlarge/text_fields_editor_view.xml
@@ -22,10 +22,6 @@
     android:orientation="vertical">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
         android:id="@+id/title"
         layout="@layout/edit_field_title" />
 
@@ -45,6 +41,7 @@
         <include
             android:id="@+id/spinner"
             layout="@layout/edit_spinner"
+            android:paddingTop="15dip"
             android:visibility="gone" />
 
         <include
diff --git a/res/layout/contact_detail_header_view.xml b/res/layout/contact_detail_header_view.xml
index 9f87b26..80dcacc 100644
--- a/res/layout/contact_detail_header_view.xml
+++ b/res/layout/contact_detail_header_view.xml
@@ -52,7 +52,7 @@
             android:singleLine="true"
             android:ellipsize="end"
             android:gravity="bottom"
-            android:textSize="30sp"
+            android:textSize="@dimen/detail_header_name_text_size"
             android:textColor="@color/detail_header_view_text_color"
             android:textStyle="bold"
          />
diff --git a/res/layout/contact_detail_list_item.xml b/res/layout/contact_detail_list_item.xml
index c9067a6..2e4a3e5 100644
--- a/res/layout/contact_detail_list_item.xml
+++ b/res/layout/contact_detail_list_item.xml
@@ -46,7 +46,7 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
             android:paddingBottom="5dip"
-            android:textAppearance="?android:attr/textAppearanceLarge" />
+            android:textAppearance="?android:attr/textAppearanceMedium" />
 
         <TextView
             android:id="@+id/footer"
diff --git a/res/layout/edit_add_field.xml b/res/layout/edit_add_field.xml
index 68a482c..1c8c740 100644
--- a/res/layout/edit_add_field.xml
+++ b/res/layout/edit_add_field.xml
@@ -18,7 +18,7 @@
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:paddingLeft="10dip"
+    android:paddingLeft="13dip"
     android:background="?android:attr/selectableItemBackground">
     <TextView
         android:id="@+id/add_text"
@@ -26,7 +26,7 @@
         android:layout_width="0dip"
         android:layout_weight="1"
         android:layout_height="wrap_content"
-        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:textAppearance="?android:attr/textAppearanceSmall"
         android:textColor="?android:attr/textColorTertiary" />
     <ImageView
         android:id="@+id/add_button"
@@ -35,7 +35,5 @@
         android:src="@drawable/ic_menu_add_field_holo_light"
         android:paddingLeft="@dimen/editor_round_button_padding_left"
         android:paddingRight="@dimen/editor_round_button_padding_right"
-        android:paddingTop="@dimen/editor_round_button_padding_top"
-        android:paddingBottom="@dimen/editor_round_button_padding_bottom"
         android:contentDescription="@string/description_plus_button" />
 </LinearLayout>
\ No newline at end of file
diff --git a/res/layout/edit_date_picker.xml b/res/layout/edit_date_picker.xml
index a957bd9..ca5e281 100644
--- a/res/layout/edit_date_picker.xml
+++ b/res/layout/edit_date_picker.xml
@@ -22,5 +22,6 @@
     android:layout_width="0dip"
     android:layout_height="wrap_content"
     android:layout_weight="1"
-    android:textAppearance="?android:attr/textAppearanceLarge"
-    style="@android:style/Widget.Holo.Spinner" />
\ No newline at end of file
+    android:layout_marginLeft="@dimen/editor_field_left_padding"
+    android:textAppearance="?android:attr/textAppearanceMedium"
+    style="@android:style/Widget.Holo.Light.Spinner" />
\ No newline at end of file
diff --git a/res/layout/edit_delete_button.xml b/res/layout/edit_delete_button.xml
index 790163e..f05b0e4 100644
--- a/res/layout/edit_delete_button.xml
+++ b/res/layout/edit_delete_button.xml
@@ -19,7 +19,7 @@
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
-    android:layout_height="@dimen/editor_min_line_item_height"
+    android:layout_height="wrap_content"
     android:layout_gravity="top">
     <ImageView
         android:id="@+id/delete_button"
diff --git a/res/layout/edit_expansion_view.xml b/res/layout/edit_expansion_view.xml
index 6368c4b..96fe8de 100644
--- a/res/layout/edit_expansion_view.xml
+++ b/res/layout/edit_expansion_view.xml
@@ -19,7 +19,7 @@
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
-    android:layout_height="@dimen/editor_min_line_item_height"
+    android:layout_height="wrap_content"
     android:layout_gravity="top">
     <ImageView
         android:id="@+id/expansion_view"
diff --git a/res/layout/edit_field_list.xml b/res/layout/edit_field_list.xml
index 448a1fd..ba715c7 100644
--- a/res/layout/edit_field_list.xml
+++ b/res/layout/edit_field_list.xml
@@ -22,5 +22,5 @@
     android:layout_width="0dip"
     android:layout_weight="1"
     android:layout_height="wrap_content"
-    android:paddingBottom="6dip"
+    android:paddingLeft="@dimen/editor_field_left_padding"
     android:orientation="vertical" />
\ No newline at end of file
diff --git a/res/layout/edit_field_title.xml b/res/layout/edit_field_title.xml
index d8f6808..4918c4d 100644
--- a/res/layout/edit_field_title.xml
+++ b/res/layout/edit_field_title.xml
@@ -21,9 +21,9 @@
     android:id="@+id/title"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:padding="@dimen/editor_field_title_padding"
+    android:paddingTop="@dimen/editor_field_top_padding"
+    android:paddingLeft="@dimen/editor_field_left_padding"
     android:textAppearance="?android:attr/textAppearanceMedium"
     android:singleLine="true"
     android:ellipsize="marquee"
-    android:fadingEdge="horizontal"
-    android:textSize="@dimen/editor_field_title_text_size" />
\ No newline at end of file
+    android:fadingEdge="horizontal" />
\ No newline at end of file
diff --git a/res/layout/edit_spinner.xml b/res/layout/edit_spinner.xml
index 1511c8c..9e22ee7 100644
--- a/res/layout/edit_spinner.xml
+++ b/res/layout/edit_spinner.xml
@@ -19,10 +19,8 @@
 <Spinner
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/spinner"
-    android:layout_width="@dimen/editor_type_label_width"
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:textAppearance="?android:attr/textAppearanceMedium"
-    android:textColor="@color/kind_title"
-    android:singleLine="true"
-    android:ellipsize="marquee"
-    android:fadingEdge="horizontal" />
\ No newline at end of file
+    android:layout_marginLeft="@dimen/editor_field_left_padding"
+    android:textAppearance="?android:attr/textAppearanceLarge"
+    android:paddingLeft="5dip"/>
\ No newline at end of file
diff --git a/res/layout/event_field_editor_view.xml b/res/layout/event_field_editor_view.xml
index 45fece9..6625279 100644
--- a/res/layout/event_field_editor_view.xml
+++ b/res/layout/event_field_editor_view.xml
@@ -20,14 +20,9 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
         android:id="@+id/title"
         layout="@layout/edit_field_title" />
 
diff --git a/res/layout/item_group_membership.xml b/res/layout/item_group_membership.xml
index 65730d4..cdf4e8a 100644
--- a/res/layout/item_group_membership.xml
+++ b/res/layout/item_group_membership.xml
@@ -21,11 +21,6 @@
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical">
 
-    <View
-        android:layout_width="match_parent"
-        android:layout_height="1px"
-        android:background="?android:attr/listDivider" />
-
     <LinearLayout
         android:id="@+id/kind_header"
         android:layout_width="match_parent"
diff --git a/res/layout/item_kind_section.xml b/res/layout/item_kind_section.xml
index e290f09..6c6f960 100644
--- a/res/layout/item_kind_section.xml
+++ b/res/layout/item_kind_section.xml
@@ -20,7 +20,7 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:paddingBottom="@dimen/editor_field_bottom_padding"
     android:orientation="vertical">
 
     <View
@@ -32,14 +32,9 @@
         android:id="@+id/kind_editors"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:paddingBottom="6dip"
         android:orientation="vertical" />
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
         android:id="@+id/add_field_footer"
         layout="@layout/edit_add_field" />
 
diff --git a/res/layout/phonetic_name_editor_view.xml b/res/layout/phonetic_name_editor_view.xml
index 1f17f69..832ca2c 100644
--- a/res/layout/phonetic_name_editor_view.xml
+++ b/res/layout/phonetic_name_editor_view.xml
@@ -18,17 +18,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:orientation="vertical"
-    android:paddingRight="?android:attr/scrollbarSize">
-
-    <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
-        android:id="@+id/title"
-        layout="@layout/edit_field_title" />
+    android:paddingBottom="@dimen/editor_field_bottom_padding"
+    android:orientation="vertical">
 
     <include
         android:id="@+id/spinner"
diff --git a/res/layout/structured_name_editor_view.xml b/res/layout/structured_name_editor_view.xml
index 039baa8..83efa6f 100644
--- a/res/layout/structured_name_editor_view.xml
+++ b/res/layout/structured_name_editor_view.xml
@@ -18,19 +18,13 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
-    android:orientation="vertical"
-    android:paddingRight="?android:attr/scrollbarSize">
+    android:orientation="vertical">
 
     <include
         android:id="@+id/divider"
         layout="@layout/edit_divider" />
 
     <include
-        android:id="@+id/title"
-        layout="@layout/edit_field_title" />
-
-    <include
         android:id="@+id/spinner"
         layout="@layout/edit_spinner"
         android:visibility="gone" />
diff --git a/res/layout/text_fields_editor_view.xml b/res/layout/text_fields_editor_view.xml
index 8279ee7..d33e804 100644
--- a/res/layout/text_fields_editor_view.xml
+++ b/res/layout/text_fields_editor_view.xml
@@ -18,14 +18,9 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:minHeight="?android:attr/listPreferredItemHeight"
     android:orientation="vertical">
 
     <include
-        android:id="@+id/divider"
-        layout="@layout/edit_divider" />
-
-    <include
         android:id="@+id/title"
         layout="@layout/edit_field_title" />
 
diff --git a/res/values-xlarge/dimens.xml b/res/values-xlarge/dimens.xml
index f156672..2d39186 100644
--- a/res/values-xlarge/dimens.xml
+++ b/res/values-xlarge/dimens.xml
@@ -18,6 +18,10 @@
     <dimen name="aggregation_suggestion_icon_size">64dip</dimen>
     <dimen name="editor_type_label_width">180dip</dimen>
     <dimen name="editor_field_spinner_text_size">15sp</dimen>
+    <dimen name="editor_round_button_padding_left">8dip</dimen>
+    <dimen name="editor_round_button_padding_right">8dip</dimen>
+    <dimen name="editor_field_top_padding">12dip</dimen>
+    <dimen name="editor_field_bottom_padding">12dip</dimen>
     <dimen name="detail_item_side_margin">19dip</dimen>
     <dimen name="quick_contact_width">356dip</dimen>
     <dimen name="contact_name_text_size">26sp</dimen>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 67e6d03..354bec7 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -35,16 +35,25 @@
     <dimen name="quick_contact_width">352dip</dimen>
 
     <!-- Padding of the rounded plus/minus/expand/collapse buttons in the editor  -->
-    <dimen name="editor_round_button_padding_left">8dip</dimen>
-    <dimen name="editor_round_button_padding_right">8dip</dimen>
+    <dimen name="editor_round_button_padding_left">4dip</dimen>
+    <dimen name="editor_round_button_padding_right">4dip</dimen>
     <dimen name="editor_round_button_padding_top">8dip</dimen>
     <dimen name="editor_round_button_padding_bottom">8dip</dimen>
 
+    <!-- Font size for the structured name in the contact detail page -->
+    <dimen name="editor_structured_name_text_size">25sp</dimen>
+
     <!-- Width of the Type-Label in the Editor -->
     <dimen name="editor_type_label_width">120dip</dimen>
 
-    <!-- Padding of the title of a field in the Editor -->
-    <dimen name="editor_field_title_padding">10dip</dimen>
+    <!-- Left padding of a field in the Editor -->
+    <dimen name="editor_field_left_padding">5dip</dimen>
+
+    <!-- Top padding of a field in the Editor -->
+    <dimen name="editor_field_top_padding">10dip</dimen>
+
+    <!-- Bottom padding of a field in the Editor -->
+    <dimen name="editor_field_bottom_padding">5dip</dimen>
 
     <!-- Minimum height of a row in the Editor -->
     <dimen name="editor_min_line_item_height">48dip</dimen>
@@ -70,6 +79,9 @@
     <!-- Width of a contact detail item type (i.e. Nickname or Website). -->
     <dimen name="detail_item_type_width">164dip</dimen>
 
+    <!-- Font size for the display name in header of the contact detail page -->
+    <dimen name="detail_header_name_text_size">30sp</dimen>
+
     <!-- Padding to be used between a visible scrollbar and the contact list -->
     <dimen name="list_visible_scrollbar_padding">40dip</dimen>
 
@@ -79,9 +91,6 @@
     <!-- Font size used for the social status in the widget -->
     <dimen name="widget_text_size_snippet">13sp</dimen>
 
-    <!-- Font size used for the contact name in the detail and the editor -->
-    <dimen name="contact_name_text_size">18sp</dimen>
-
     <!-- Minimum width of the filter selector in the action bar -->
     <dimen name="action_bar_filter_min_width">100dip</dimen>
 
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 593879f..2469a3d 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -193,7 +193,7 @@
     <style name="ContactDetailItemType">
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">wrap_content</item>
-        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
+        <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
         <item name="android:textColor">@color/detail_item_type_color</item>
         <item name="android:singleLine">true</item>
         <item name="android:ellipsize">marquee</item>
diff --git a/src/com/android/contacts/editor/LabeledEditorView.java b/src/com/android/contacts/editor/LabeledEditorView.java
index 011804c..af5ae65 100644
--- a/src/com/android/contacts/editor/LabeledEditorView.java
+++ b/src/com/android/contacts/editor/LabeledEditorView.java
@@ -167,6 +167,9 @@
      * Creates or removes the type/label button. Doesn't do anything if already correctly configured
      */
     private void setupLabelButton(boolean shouldExist) {
+        if (mTitle == null) {
+            return;
+        }
         if (shouldExist) {
             mLabel.setEnabled(!mReadOnly && isEnabled());
             mLabel.setVisibility(View.VISIBLE);
@@ -310,8 +313,12 @@
                 ? ""
                 : getResources().getString(kind.titleRes);
 
-        // Setup title (may not be shown if there is a Spinner setup later).
-        mTitle.setText(titleString.toUpperCase());
+        // If there is a title field, then setup the title (although it may not be shown if there is
+        // a Spinner setup later). There are cases where a title may not be present (i.e. structured
+        // name).
+        if (mTitle != null) {
+            mTitle.setText(titleString.toUpperCase());
+        }
 
         // Display label selector if multiple types available
         final boolean hasTypes = EntityModifier.hasEditTypes(kind);
@@ -441,13 +448,10 @@
     private class EditTypeAdapter extends ArrayAdapter<EditType> {
         private final LayoutInflater mInflater;
         private boolean mHasCustomSelection;
-        private int mTextSize;
 
         public EditTypeAdapter(Context context) {
             super(context, 0);
             mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-            mTextSize = getResources().getDimensionPixelSize(
-                    R.dimen.editor_field_spinner_text_size);
 
             if (mType != null && mType.customColumn != null) {
 
@@ -490,7 +494,6 @@
             }
 
             textView = (TextView) view;
-            textView.setTextSize(mTextSize);
 
             EditType type = getItem(position);
             String text;
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 4813f29..2e8ddd8 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -130,7 +130,6 @@
         final int photoSize = getResources().getDimensionPixelSize(R.dimen.edit_photo_size);
 
         mName = (StructuredNameEditorView)findViewById(R.id.edit_name);
-        mName.setMinimumHeight(photoSize);
         mName.setDeletable(false);
 
         mPhoneticName = (PhoneticNameEditorView)findViewById(R.id.edit_phonetic_name);
@@ -191,8 +190,8 @@
         setHasPhotoEditor((type.getKindForMimetype(Photo.CONTENT_ITEM_TYPE) != null));
         getPhotoEditor().setEnabled(isEnabled());
         mName.setEnabled(isEnabled());
-        mName.setEditorTextSize(
-                mContext.getResources().getDimensionPixelSize(R.dimen.contact_name_text_size));
+        mName.setEditorTextSize(mContext.getResources().getDimensionPixelSize(
+                R.dimen.editor_structured_name_text_size));
 
         mPhoneticName.setEnabled(isEnabled());
 
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index 1ca0c4f..e74492c 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -28,6 +28,8 @@
 import android.graphics.Rect;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
 import android.telephony.PhoneNumberFormattingTextWatcher;
 import android.text.Editable;
 import android.text.InputType;
@@ -40,6 +42,7 @@
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.Toast;
 
 /**
  * Simple editor that handles labels and any {@link EditField} defined for the
@@ -53,7 +56,7 @@
     private ImageView mExpansionView;
     private boolean mHideOptional = true;
     private boolean mHasShortAndLongForms;
-    private int mEditorTextSize;
+    private int mEditorTextSize = 0;
 
     public TextFieldsEditorView(Context context) {
         super(context);
@@ -75,7 +78,6 @@
         setDrawingCacheEnabled(true);
         setAlwaysDrawnWithCacheEnabled(true);
 
-        mEditorTextSize = getResources().getDimensionPixelSize(R.dimen.editor_field_text_size);
         mFields = (ViewGroup) findViewById(R.id.editors);
         mExpansionView = (ImageView) findViewById(R.id.expansion_view);
         mExpansionViewContainer = findViewById(R.id.expansion_view_container);
@@ -102,8 +104,12 @@
         });
     }
 
+    /**
+     * Set the text size of the value of all fields in this class, which will override the default
+     * text appearance style for the associated {@link DataKind}.
+     */
     public void setEditorTextSize(int textSize) {
-        this.mEditorTextSize = textSize;
+        mEditorTextSize = textSize;
     }
 
     @Override
@@ -171,8 +177,11 @@
             final EditText fieldView = new EditText(mContext);
             fieldView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
                     LayoutParams.WRAP_CONTENT));
+            fieldView.setTextAppearance(getContext(), kind.textAppearanceResourceId);
+            if (mEditorTextSize != 0) {
+                fieldView.setTextSize(mEditorTextSize);
+            }
             fieldView.setGravity(Gravity.TOP);
-            fieldView.setTextSize(mEditorTextSize);
             mFieldEditTexts[index] = fieldView;
             fieldView.setId(vig.getId(state, kind, entry, index));
             if (field.titleRes > 0) {
diff --git a/src/com/android/contacts/model/BaseAccountType.java b/src/com/android/contacts/model/BaseAccountType.java
index 3196876..ee08522 100644
--- a/src/com/android/contacts/model/BaseAccountType.java
+++ b/src/com/android/contacts/model/BaseAccountType.java
@@ -99,7 +99,8 @@
 
     protected DataKind addDataKindStructuredName(Context context) {
         DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
-                R.string.nameLabelsGroup, -1, -1, true, R.layout.structured_name_editor_view, -1));
+                R.string.nameLabelsGroup, -1, -1, true, R.layout.structured_name_editor_view,
+                android.R.style.TextAppearance_Large, -1));
         kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
 
@@ -128,7 +129,8 @@
 
     protected DataKind addDataKindDisplayName(Context context) {
         DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
-                R.string.nameLabelsGroup, -1, -1, true, R.layout.text_fields_editor_view, -1));
+                R.string.nameLabelsGroup, -1, -1, true, R.layout.text_fields_editor_view,
+                android.R.style.TextAppearance_Large, -1));
         kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
 
@@ -168,7 +170,8 @@
 
     protected DataKind addDataKindPhoneticName(Context context) {
         DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
-                R.string.name_phonetic, -1, -1, true, R.layout.phonetic_name_editor_view, -1));
+                R.string.name_phonetic, -1, -1, true, R.layout.phonetic_name_editor_view,
+                android.R.style.TextAppearance_Medium, -1));
         kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
 
@@ -188,7 +191,7 @@
     protected DataKind addDataKindNickname(Context context) {
         DataKind kind = addKind(new DataKind(Nickname.CONTENT_ITEM_TYPE,
                     R.string.nicknameLabelsGroup, -1, 115, true,
-                    R.layout.text_fields_editor_view, -1));
+                    R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium, -1));
         kind.isList = false;
         kind.actionHeader = new SimpleInflater(R.string.nicknameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
@@ -205,7 +208,8 @@
     protected DataKind addDataKindPhone(Context context) {
         DataKind kind = addKind(new DataKind(Phone.CONTENT_ITEM_TYPE, R.string.phoneLabelsGroup,
                 android.R.drawable.sym_action_call, 10, true,
-                R.layout.text_fields_editor_view, R.string.add_phone));
+                R.layout.text_fields_editor_view, android.R.style.TextAppearance_Large,
+                R.string.add_phone));
         kind.iconAltRes = R.drawable.sym_action_sms;
         kind.actionHeader = new PhoneActionInflater();
         kind.actionAltHeader = new PhoneActionAltInflater();
@@ -245,7 +249,8 @@
     protected DataKind addDataKindEmail(Context context) {
         DataKind kind = addKind(new DataKind(Email.CONTENT_ITEM_TYPE, R.string.emailLabelsGroup,
                 R.drawable.sym_action_email_holo_light, 15, true,
-                R.layout.text_fields_editor_view, R.string.add_email));
+                R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                R.string.add_email));
         kind.actionHeader = new EmailActionInflater();
         kind.actionBody = new SimpleInflater(Email.DATA);
         kind.typeColumn = Email.TYPE;
@@ -266,7 +271,8 @@
     protected DataKind addDataKindStructuredPostal(Context context) {
         DataKind kind = addKind(new DataKind(StructuredPostal.CONTENT_ITEM_TYPE,
                 R.string.postalLabelsGroup, R.drawable.sym_action_show_map_holo_light, 25,
-                true, R.layout.text_fields_editor_view, R.string.add_address));
+                true, R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                R.string.add_address));
         kind.actionHeader = new PostalActionInflater();
         kind.actionBody = new SimpleInflater(StructuredPostal.FORMATTED_ADDRESS);
         kind.typeColumn = StructuredPostal.TYPE;
@@ -288,7 +294,8 @@
     protected DataKind addDataKindIm(Context context) {
         DataKind kind = addKind(new DataKind(Im.CONTENT_ITEM_TYPE, R.string.imLabelsGroup,
                     R.drawable.sym_action_talk_holo_light, 20, true,
-                    R.layout.text_fields_editor_view, R.string.add_im));
+                    R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                    R.string.add_im));
         kind.actionHeader = new ImActionInflater();
         kind.actionBody = new SimpleInflater(Im.DATA);
 
@@ -320,7 +327,7 @@
     protected DataKind addDataKindOrganization(Context context) {
         DataKind kind = addKind(new DataKind(Organization.CONTENT_ITEM_TYPE,
                     R.string.organizationLabelsGroup, -1, 5, true,
-                    R.layout.text_fields_editor_view, -1));
+                    R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium, -1));
         kind.actionHeader = new SimpleInflater(Organization.COMPANY);
         kind.actionBody = new SimpleInflater(Organization.TITLE);
         kind.isList = false;
@@ -335,7 +342,8 @@
     }
 
     protected DataKind addDataKindPhoto(Context context) {
-        DataKind kind = addKind(new DataKind(Photo.CONTENT_ITEM_TYPE, -1, -1, -1, true, -1, -1));
+        DataKind kind = addKind(new DataKind(Photo.CONTENT_ITEM_TYPE, -1, -1, -1, true, -1,
+                    android.R.style.TextAppearance_Medium, -1));
         kind.fieldList = Lists.newArrayList();
         kind.fieldList.add(new EditField(Photo.PHOTO, -1, -1));
         return kind;
@@ -344,7 +352,8 @@
     protected DataKind addDataKindNote(Context context) {
         DataKind kind = addKind(new DataKind(Note.CONTENT_ITEM_TYPE,
                     R.string.label_notes, -1, 110, true,
-                    R.layout.text_fields_editor_view, R.string.add_note));
+                    R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                    R.string.add_note));
         kind.isList = false;
         kind.actionHeader = new SimpleInflater(R.string.label_notes);
         kind.actionBody = new SimpleInflater(Note.NOTE);
@@ -357,7 +366,8 @@
     protected DataKind addDataKindWebsite(Context context) {
         DataKind kind = addKind(new DataKind(Website.CONTENT_ITEM_TYPE,
                 R.string.websiteLabelsGroup, R.drawable.sym_action_goto_website_holo_light, 120,
-                true, R.layout.text_fields_editor_view, R.string.add_website));
+                true, R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                R.string.add_website));
         kind.actionHeader = new SimpleInflater(R.string.websiteLabelsGroup);
         kind.actionBody = new SimpleInflater(Website.URL);
         kind.defaultValues = new ContentValues();
@@ -380,7 +390,8 @@
         // intent-filters in the Phone app's manifest.
         DataKind kind = addKind(new DataKind(SipAddress.CONTENT_ITEM_TYPE,
                     R.string.label_sip_address, android.R.drawable.sym_action_call, 130, true,
-                    R.layout.text_fields_editor_view, -1));
+                    R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                    -1));
 
         kind.isList = false;
         kind.actionHeader = new SimpleInflater(R.string.label_sip_address);
@@ -395,7 +406,8 @@
     protected DataKind addDataKindGroupMembership(Context context) {
         DataKind kind = getKindForMimetype(GroupMembership.CONTENT_ITEM_TYPE);
         kind = addKind(new DataKind(GroupMembership.CONTENT_ITEM_TYPE,
-                R.string.groupsLabel, android.R.drawable.sym_contact_card, 999, true, -1, -1));
+                R.string.groupsLabel, android.R.drawable.sym_contact_card, 999, true, -1,
+                android.R.style.TextAppearance_Medium, -1));
 
         kind.isList = false;
         kind.fieldList = Lists.newArrayList();
diff --git a/src/com/android/contacts/model/DataKind.java b/src/com/android/contacts/model/DataKind.java
index 73c1e45..52769c3 100644
--- a/src/com/android/contacts/model/DataKind.java
+++ b/src/com/android/contacts/model/DataKind.java
@@ -59,6 +59,9 @@
     /** Layout resource id for an editor view to edit this {@link DataKind}. */
     public final int editorLayoutResourceId;
 
+    /** Text appearance resource id for the value of a field in this {@link DataKind}. */
+    public final int textAppearanceResourceId;
+
     /**
      * String resource id for the "add field" footer. This is equal to -1 if it
      * is not applicable to add a new field to this class (i.e. for a structured
@@ -82,11 +85,13 @@
 
     public DataKind() {
         editorLayoutResourceId = R.layout.text_fields_editor_view;
+        textAppearanceResourceId = android.R.style.TextAppearance_Medium;
         addNewFieldTextResourceId = -1;
     }
 
     public DataKind(String mimeType, int titleRes, int iconRes, int weight, boolean editable,
-            int editorLayoutResourceId, int addNewFieldTextResourceId) {
+            int editorLayoutResourceId, int textAppearanceResourceId,
+            int addNewFieldTextResourceId) {
         this.mimeType = mimeType;
         this.titleRes = titleRes;
         this.iconRes = iconRes;
@@ -95,6 +100,7 @@
         this.isList = true;
         this.typeOverallMax = -1;
         this.editorLayoutResourceId = editorLayoutResourceId;
+        this.textAppearanceResourceId = textAppearanceResourceId;
         this.addNewFieldTextResourceId = addNewFieldTextResourceId;
     }
 }
\ No newline at end of file
diff --git a/src/com/android/contacts/model/ExchangeAccountType.java b/src/com/android/contacts/model/ExchangeAccountType.java
index 2f6d781..22a2ba2 100644
--- a/src/com/android/contacts/model/ExchangeAccountType.java
+++ b/src/com/android/contacts/model/ExchangeAccountType.java
@@ -65,7 +65,7 @@
     protected DataKind addDataKindStructuredName(Context context) {
         DataKind kind = addKind(new DataKind(StructuredName.CONTENT_ITEM_TYPE,
                 R.string.nameLabelsGroup, -1, -1, true,
-                R.layout.structured_name_editor_view, -1));
+                R.layout.structured_name_editor_view, android.R.style.TextAppearance_Large, -1));
         kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
 
@@ -95,7 +95,7 @@
     protected DataKind addDataKindDisplayName(Context context) {
         DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_DISPLAY_NAME,
                 R.string.nameLabelsGroup, -1, -1, true,
-                R.layout.text_fields_editor_view, -1));
+                R.layout.text_fields_editor_view, android.R.style.TextAppearance_Large, -1));
 
         boolean displayOrderPrimary =
                 context.getResources().getBoolean(R.bool.config_editor_field_order_primary);
@@ -129,7 +129,7 @@
     protected DataKind addDataKindPhoneticName(Context context) {
         DataKind kind = addKind(new DataKind(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
                 R.string.name_phonetic, -1, -1, true,
-                R.layout.phonetic_name_editor_view, -1));
+                R.layout.phonetic_name_editor_view, android.R.style.TextAppearance_Medium, -1));
         kind.actionHeader = new SimpleInflater(R.string.nameLabelsGroup);
         kind.actionBody = new SimpleInflater(Nickname.NAME);
 
@@ -295,7 +295,8 @@
     protected DataKind addDataKindEvent(Context context) {
         DataKind kind = addKind(
                 new DataKind(Event.CONTENT_ITEM_TYPE, R.string.eventLabelsGroup, -1, 150, true,
-                R.layout.event_field_editor_view, R.string.add_event));
+                R.layout.event_field_editor_view, android.R.style.TextAppearance_Medium,
+                R.string.add_event));
         kind.actionHeader = new EventActionInflater();
         kind.actionBody = new SimpleInflater(Event.START_DATE);
 
diff --git a/src/com/android/contacts/model/GoogleAccountType.java b/src/com/android/contacts/model/GoogleAccountType.java
index 3d437cb..bd445b1 100644
--- a/src/com/android/contacts/model/GoogleAccountType.java
+++ b/src/com/android/contacts/model/GoogleAccountType.java
@@ -100,7 +100,8 @@
     private DataKind addDataKindRelation(Context context) {
         DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE,
                 R.string.relationLabelsGroup, -1, 160, true,
-                R.layout.text_fields_editor_view, R.string.add_relationship));
+                R.layout.text_fields_editor_view, android.R.style.TextAppearance_Medium,
+                R.string.add_relationship));
         kind.actionHeader = new RelationActionInflater();
         kind.actionBody = new SimpleInflater(Relation.NAME);
 
@@ -136,7 +137,8 @@
     private DataKind addDataKindEvent(Context context) {
         DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE,
                     R.string.eventLabelsGroup, -1, 150, true,
-                    R.layout.event_field_editor_view, R.string.add_event));
+                    R.layout.event_field_editor_view, android.R.style.TextAppearance_Medium,
+                    R.string.add_event));
         kind.actionHeader = new EventActionInflater();
         kind.actionBody = new SimpleInflater(Event.START_DATE);
 
diff --git a/tests/src/com/android/contacts/EntityModifierTests.java b/tests/src/com/android/contacts/EntityModifierTests.java
index 52a6cdf..ea42239 100644
--- a/tests/src/com/android/contacts/EntityModifierTests.java
+++ b/tests/src/com/android/contacts/EntityModifierTests.java
@@ -82,14 +82,14 @@
             this.accountType = TEST_ACCOUNT_TYPE;
 
             final DataKind nameKind = new DataKind(StructuredName.CONTENT_ITEM_TYPE,
-                    R.string.nameLabelsGroup, -1, -1, true, -1, -1);
+                    R.string.nameLabelsGroup, -1, -1, true, -1, -1, -1);
             nameKind.typeOverallMax = 1;
             addKind(nameKind);
 
             // Phone allows maximum 2 home, 1 work, and unlimited other, with
             // constraint of 5 numbers maximum.
             final DataKind phoneKind = new DataKind(
-                    Phone.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1);
+                    Phone.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1, -1);
 
             phoneKind.typeOverallMax = 5;
             phoneKind.typeColumn = Phone.TYPE;
@@ -107,14 +107,15 @@
 
             // Email is unlimited
             final DataKind emailKind = new DataKind(
-                    Email.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1);
+                    Email.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1, -1);
             emailKind.typeOverallMax = -1;
             emailKind.fieldList = Lists.newArrayList();
             emailKind.fieldList.add(new EditField(Email.DATA, -1, -1));
             addKind(emailKind);
 
             // IM is only one
-            final DataKind imKind = new DataKind(Im.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1);
+            final DataKind imKind = new DataKind(Im.CONTENT_ITEM_TYPE, -1, -1, 10,
+                    true, -1, -1, -1);
             imKind.typeOverallMax = 1;
             imKind.fieldList = Lists.newArrayList();
             imKind.fieldList.add(new EditField(Im.DATA, -1, -1));
@@ -122,7 +123,7 @@
 
             // Organization is only one
             final DataKind orgKind = new DataKind(
-                    Organization.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1);
+                    Organization.CONTENT_ITEM_TYPE, -1, -1, 10, true, -1, -1, -1);
             orgKind.typeOverallMax = 1;
             orgKind.fieldList = Lists.newArrayList();
             orgKind.fieldList.add(new EditField(Organization.COMPANY, -1, -1));
