diff --git a/InCallUI/res/layout/dialpad_incall.xml b/InCallUI/res/layout/dialpad_incall.xml
deleted file mode 100644
index 9624000..0000000
--- a/InCallUI/res/layout/dialpad_incall.xml
+++ /dev/null
@@ -1,79 +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.
--->
-
-<TableLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/dialpad"
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="4"
-    android:layout_gravity="center_horizontal"
-    android:paddingBottom="@dimen/dialpad_bottom_padding"
-    android:paddingLeft="@dimen/dialpad_horizontal_padding"
-    android:paddingRight="@dimen/dialpad_horizontal_padding"
-    android:stretchColumns="*"
-    android:layoutDirection="ltr" >
-
-    <TableRow style="@style/InCallDialpadTableRowStyle">
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/one"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/two"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/three"/>
-    </TableRow>
-
-    <TableRow style="@style/InCallDialpadTableRowStyle">
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/four"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/five"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/six"/>
-    </TableRow>
-
-    <TableRow style="@style/InCallDialpadTableRowStyle">
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/seven"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/eight"/>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/nine"/>
-    </TableRow>
-
-    <TableRow style="@style/InCallDialpadTableRowStyle">
-        <com.android.contacts.common.dialpad.DialpadKeyButton
-            android:id="@+id/star"
-            style="@style/InCallDialpadKeyButtonStyle">
-            <LinearLayout
-                style="@style/InCallDialpadKeyInternalLayoutStyle">
-                <TextView
-                    android:id="@+id/dialpad_key_number"
-                    style="@style/InCallDialpadKeyStarPoundStyle"
-                    android:textSize="@dimen/dialpad_key_star_size" />
-                <View
-                    android:layout_height="match_parent"
-                    android:layout_width="@dimen/dialpad_key_letters_width" />
-            </LinearLayout>
-        </com.android.contacts.common.dialpad.DialpadKeyButton>
-        <include layout="@layout/dialpad_key_incall" android:id="@+id/zero"/>
-        <com.android.contacts.common.dialpad.DialpadKeyButton
-            android:id="@+id/pound"
-            style="@style/InCallDialpadKeyButtonStyle">
-            <LinearLayout
-                style="@style/InCallDialpadKeyInternalLayoutStyle">
-                <TextView
-                    android:id="@+id/dialpad_key_number"
-                    style="@style/InCallDialpadKeyStarPoundStyle"
-                    android:textSize="@dimen/dialpad_key_pound_size" />
-                <View
-                    android:layout_height="match_parent"
-                    android:layout_width="@dimen/dialpad_key_letters_width" />
-            </LinearLayout>
-        </com.android.contacts.common.dialpad.DialpadKeyButton>
-    </TableRow>
-</TableLayout>
diff --git a/InCallUI/res/layout/dialpad_key_incall.xml b/InCallUI/res/layout/dialpad_key_incall.xml
deleted file mode 100644
index 8ce4b51..0000000
--- a/InCallUI/res/layout/dialpad_key_incall.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.
--->
-
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    style="@style/InCallDialpadKeyButtonStyle">
-
-    <LinearLayout style="@style/InCallDialpadKeyInternalLayoutStyle">
-
-        <!-- Note in the referenced styles that we assign hard widths to these components
-             because we want them to line up vertically when we arrange them in an MxN grid -->
-
-        <TextView
-            android:id="@+id/dialpad_key_number"
-            style="@style/InCallDialpadKeyNumberStyle" />
-
-        <TextView
-            android:id="@+id/dialpad_key_letters"
-            style="@style/InCallDialpadKeyLettersStyle" />
-    </LinearLayout>
-</FrameLayout>
\ No newline at end of file
diff --git a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
index fb3b66e..cd9977e 100644
--- a/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
+++ b/InCallUI/res/layout/dtmf_twelve_key_dialer_view.xml
@@ -20,43 +20,12 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:layout_marginTop="1dip"
-    android:background="@color/incall_dialpad_background" >
+    android:layout_marginTop="1dip" >
 
     <view class="com.android.incallui.DialpadFragment$HoverIgnoringLinearLayout"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
-
-        <!-- Display of the digits you've typed so far.
-             This widget appears completely non-interactive to the user: you
-             can't edit or "hit backspace" since these are DTMF tones you've
-             already sent over the network.  But it's still an EditText rather
-             than a TextView because it needs to receive key events from a
-             hard keyboard, if present (see mDialerKeyListener). -->
-        <!-- Edit text background is fully transparent to get rid of its underline. -->
-        <EditText
-            android:id="@+id/dtmfDialerField"
-            android:layout_width="match_parent"
-            android:layout_height="0dp"
-            android:layout_weight="1"
-            android:layout_marginTop="10dp"
-            android:layout_marginBottom="5dp"
-            android:layout_marginStart="32dp"
-            android:layout_marginEnd="32dp"
-            android:background="@null"
-            android:paddingEnd="12dp"
-            android:paddingStart="12dp"
-            android:singleLine="true"
-            android:scrollHorizontally="true"
-            android:gravity="center"
-            android:freezesText="true"
-            android:fontFamily="sans-serif-light"
-            android:textSize="@dimen/dialpad_digits_text_size"
-            android:textColor="@color/dialpad_digits_text_color"
-            android:focusableInTouchMode="false"
-            android:clickable="false"/>
-
-        <include layout="@layout/dialpad_incall"/>
+        <include layout="@layout/dialpad_view"/>
     </view>
 </view>
diff --git a/InCallUI/res/values/colors.xml b/InCallUI/res/values/colors.xml
index 8d48759..a5bcadf 100644
--- a/InCallUI/res/values/colors.xml
+++ b/InCallUI/res/values/colors.xml
@@ -51,7 +51,7 @@
     <color name="dialpad_digits_text_color">#000000</color>
 
     <color name="incall_dialpad_background">#ccffffff</color>
-    <color name="incall_dialpad_background_pressed">#33ffffff</color>
+    <color name="incall_dialpad_background_pressed">#ccaaaaaa</color>
 
     <!-- Button background color. -->
     <color name="button_background_color">@color/incall_background_color</color>
diff --git a/InCallUI/res/values/dimens.xml b/InCallUI/res/values/dimens.xml
index b428179..763751c 100644
--- a/InCallUI/res/values/dimens.xml
+++ b/InCallUI/res/values/dimens.xml
@@ -74,26 +74,6 @@
     <dimen name="otalistenprogress_layout_marginTop">5dp</dimen>
     <dimen name="otasuccessfail_layout_marginTop">10dp</dimen>
 
-
-    <!-- Dimensions for Emergency Dialer and dialpad inside the in-call screen -->
-    <dimen name="dialpad_horizontal_margin">4dp</dimen>
-    <dimen name="dialpad_vertical_margin">2dp</dimen>
-    <dimen name="dialpad_digits_text_size">36sp</dimen>
-    <dimen name="dialpad_digits_height">47dp</dimen>
-
-    <!-- Just used in landscape mode -->
-    <dimen name="emergency_dialer_digits_height">0px</dimen>
-    <dimen name="dialpad_center_margin">3dp</dimen>
-    <dimen name="dialpad_button_margin">3dp</dimen>
-
-
-    <!-- Layout weight values for dialpad screen. These layouts will be used in one
-         LinearLayout (dialpad_fragment.xml), configuring dialpad screen's vertical
-         ratio. -->
-    <integer name="dialpad_layout_weight_digits">20</integer>
-    <integer name="dialpad_layout_weight_dialpad">65</integer>
-    <integer name="dialpad_layout_weight_additional_buttons">15</integer>
-
     <!-- Dimension used to possibly down-scale high-res photo into what is suitable
          for notification's large icon. -->
     <dimen name="notification_icon_size">64dp</dimen>
@@ -124,19 +104,6 @@
     <dimen name="glowpadview_margin_bottom">-48dip</dimen>
     <dimen name="glowpadview_margin_right">0dip</dimen>
 
-    <!-- Text dimensions for dialpad keys -->
-    <dimen name="dialpad_key_numbers_size">40sp</dimen>
-    <dimen name="dialpad_key_letters_size">13sp</dimen>
-    <dimen name="dialpad_key_star_size">26sp</dimen>
-    <dimen name="dialpad_key_pound_size">26sp</dimen>
-    <dimen name="dialpad_key_numbers_width">30dp</dimen>
-    <dimen name="dialpad_key_letters_width">50dp</dimen>
-    <dimen name="dialpad_key_height">56dp</dimen>
-    <dimen name="dialpad_key_plus_size">18sp</dimen>
-    <dimen name="dialpad_number_to_letters_padding">11dp</dimen>
-    <dimen name="dialpad_bottom_padding">90dp</dimen>
-    <dimen name="dialpad_horizontal_padding">5dp</dimen>
-
     <!-- Height of translucent shadow effect -->
     <dimen name="translucent_shadow_height">2dp</dimen>
 
diff --git a/InCallUI/res/values/styles.xml b/InCallUI/res/values/styles.xml
index 4715146..f77cb24 100644
--- a/InCallUI/res/values/styles.xml
+++ b/InCallUI/res/values/styles.xml
@@ -119,57 +119,10 @@
         <item name="android:windowAnimationStyle">@style/InCallAnimationStyle</item>
     </style>
 
-    <style name="InCallDialpadTableRowStyle">
-        <item name="android:layout_height">0dp</item>
-        <item name="android:layout_weight">1</item>
-        <item name="android:layout_width">match_parent</item>
-    </style>
-
-    <style name="InCallDialpadKeyNumberStyle">
-        <item name="android:textColor">@color/actionbar_background_color</item>
-        <item name="android:textSize">@dimen/dialpad_key_numbers_size</item>
-        <item name="android:fontFamily">sans-serif-light</item>
-        <item name="android:layout_width">@dimen/dialpad_key_numbers_width</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:gravity">center</item>
-    </style>
-
-    <style name="InCallDialpadKeyStarPoundStyle">
-        <item name="android:textColor">@color/dialpad_secondary_text_color</item>
-        <item name="android:fontFamily">sans-serif-light</item>
-        <item name="android:layout_width">@dimen/dialpad_key_numbers_width</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:gravity">center</item>
-    </style>
-
-    <style name="InCallDialpadKeyLettersStyle">
-        <item name="android:textColor">@color/dialpad_secondary_text_color</item>
-        <item name="android:textSize">@dimen/dialpad_key_letters_size</item>
-        <item name="android:fontFamily">sans-serif-light</item>
-        <item name="android:layout_width">@dimen/dialpad_key_letters_width</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:paddingLeft">@dimen/dialpad_number_to_letters_padding</item>
-    </style>
-
-    <style name="InCallDialpadKeyButtonStyle">
-        <item name="android:soundEffectsEnabled">false</item>
-        <item name="android:clickable">true</item>
-        <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">@dimen/dialpad_key_height</item>
-        <item name="android:background">@drawable/incall_dialpad_key_colors</item>
-        <item name="android:focusable">true</item>
-    </style>
-
-    <style name="InCallDialpadKeyInternalLayoutStyle">
-        <item name="android:layout_width">wrap_content</item>
-        <item name="android:layout_height">wrap_content</item>
-        <item name="android:layout_gravity">center</item>
-        <item name="android:gravity">center</item>
-    </style>
-
     <style name="PrimaryCallInfoPrimaryCallBanner">
         <item name="android:layout_alignParentTop">true</item>
     </style>
+
     <style name="SecondaryCallInfoSecondaryCallName">
         <item name="android:layout_gravity">top|left</item>
     </style>
diff --git a/InCallUI/src/com/android/incallui/DialpadFragment.java b/InCallUI/src/com/android/incallui/DialpadFragment.java
index 236b38c..d22b903 100644
--- a/InCallUI/src/com/android/incallui/DialpadFragment.java
+++ b/InCallUI/src/com/android/incallui/DialpadFragment.java
@@ -17,7 +17,6 @@
 package com.android.incallui;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.method.DialerKeyListener;
@@ -31,9 +30,11 @@
 import android.view.accessibility.AccessibilityManager;
 import android.widget.EditText;
 import android.widget.LinearLayout;
-import android.widget.TableRow;
 import android.widget.TextView;
 
+import com.android.contacts.common.dialpad.DialpadKeyButton;
+import com.android.contacts.common.dialpad.DialpadView;
+
 import java.util.HashMap;
 
 /**
@@ -124,6 +125,8 @@
     // KeyListener used with the "dialpad digits" EditText widget.
     private DTMFKeyListener mDialerKeyListener;
 
+    private DialpadView mDialpadView;
+
     /**
      * Our own key listener, specialized for dealing with DTMF codes.
      *   1. Ignore the backspace since it is irrelevant.
@@ -432,15 +435,18 @@
             Bundle savedInstanceState) {
         final View parent = inflater.inflate(
                 com.android.incallui.R.layout.dtmf_twelve_key_dialer_view, container, false);
-        mDtmfDialerField = (EditText) parent.findViewById(R.id.dtmfDialerField);
+        mDialpadView = (DialpadView) parent.findViewById(R.id.dialpad_view);
+        mDialpadView.setCanDigitsBeEdited(false);
+        mDialpadView.setBackgroundResource(R.color.incall_dialpad_background);
+        mDtmfDialerField = (EditText) parent.findViewById(R.id.digits);
         if (mDtmfDialerField != null) {
             mDialerKeyListener = new DTMFKeyListener();
             mDtmfDialerField.setKeyListener(mDialerKeyListener);
             // remove the long-press context menus that support
             // the edit (copy / paste / select) functions.
             mDtmfDialerField.setLongClickable(false);
-
-            setupKeypad(parent);
+            mDtmfDialerField.setElegantTextHeight(false);
+            configureKeypadListeners(mDialpadView);
         }
 
         final ViewTreeObserver vto = parent.getViewTreeObserver();
@@ -523,43 +529,17 @@
         }
     }
 
-    private void setupKeypad(View fragmentView) {
+    private void configureKeypadListeners(View fragmentView) {
         final int[] buttonIds = new int[] {R.id.zero, R.id.one, R.id.two, R.id.three, R.id.four,
                 R.id.five, R.id.six, R.id.seven, R.id.eight, R.id.nine, R.id.star, R.id.pound};
-
-        final int[] numberIds = new int[] {R.string.dialpad_0_number, R.string.dialpad_1_number,
-                R.string.dialpad_2_number, R.string.dialpad_3_number, R.string.dialpad_4_number,
-                R.string.dialpad_5_number, R.string.dialpad_6_number, R.string.dialpad_7_number,
-                R.string.dialpad_8_number, R.string.dialpad_9_number, R.string.dialpad_star_number,
-                R.string.dialpad_pound_number};
-
-        final int[] letterIds = new int[] {R.string.dialpad_0_letters, R.string.dialpad_1_letters,
-                R.string.dialpad_2_letters, R.string.dialpad_3_letters, R.string.dialpad_4_letters,
-                R.string.dialpad_5_letters, R.string.dialpad_6_letters, R.string.dialpad_7_letters,
-                R.string.dialpad_8_letters, R.string.dialpad_9_letters,
-                R.string.dialpad_star_letters, R.string.dialpad_pound_letters};
-
-        final Resources resources = getResources();
-
-        View button;
-        TextView numberView;
-        TextView lettersView;
-
+        DialpadKeyButton dialpadKey;
         for (int i = 0; i < buttonIds.length; i++) {
-            button = fragmentView.findViewById(buttonIds[i]);
-            button.setOnTouchListener(this);
-            button.setClickable(true);
-            button.setOnKeyListener(this);
-            button.setOnHoverListener(this);
-            button.setOnClickListener(this);
-            numberView = (TextView) button.findViewById(R.id.dialpad_key_number);
-            lettersView = (TextView) button.findViewById(R.id.dialpad_key_letters);
-            final String numberString = resources.getString(numberIds[i]);
-            numberView.setText(numberString);
-            button.setContentDescription(numberString);
-            if (lettersView != null) {
-                lettersView.setText(resources.getString(letterIds[i]));
-            }
+            dialpadKey = (DialpadKeyButton) fragmentView.findViewById(buttonIds[i]);
+            dialpadKey.setBackgroundResource(R.drawable.incall_dialpad_key_colors);
+            dialpadKey.setOnTouchListener(this);
+            dialpadKey.setOnKeyListener(this);
+            dialpadKey.setOnHoverListener(this);
+            dialpadKey.setOnClickListener(this);
         }
     }
 }
