Use DialpadTextView instead of TextView to show letters under each digit key.

Bug: 30215380
Test: Manual
PiperOrigin-RevId: 174055180
Change-Id: Iac6deb8f9dcb6f3e9da6dfd0d732f29cc34bb7f6
diff --git a/java/com/android/dialer/dialpadview/DialpadTextView.java b/java/com/android/dialer/dialpadview/DialpadTextView.java
index 5b1b7bb..b1eee4b 100644
--- a/java/com/android/dialer/dialpadview/DialpadTextView.java
+++ b/java/com/android/dialer/dialpadview/DialpadTextView.java
@@ -24,8 +24,8 @@
 import android.widget.TextView;
 
 /**
- * This is a custom text view intended only for rendering the numerals (and star and pound) on the
- * dialpad. TextView has built in top/bottom padding to help account for ascenders/descenders.
+ * This is a custom text view intended for rendering text on the dialpad. TextView has built-in
+ * top/bottom padding to help account for ascenders/descenders.
  *
  * <p>Since vertical space is at a premium on the dialpad, particularly if the font size is scaled
  * to a larger default, for the dialpad we use this class to more precisely render characters
diff --git a/java/com/android/dialer/dialpadview/DialpadView.java b/java/com/android/dialer/dialpadview/DialpadView.java
index d70b0a6..5e79cb5 100644
--- a/java/com/android/dialer/dialpadview/DialpadView.java
+++ b/java/com/android/dialer/dialpadview/DialpadView.java
@@ -223,29 +223,32 @@
       if (mIsLandscape) {
         adjustKeyWidths();
       } else {
-        adjustKeyHeightsInFirstRow();
+        adjustDigitKeyHeights();
       }
     }
   }
 
   /**
-   * Adjust key heights in the first row.
+   * Make the heights of all digit keys the same.
    *
-   * <p>A voice mail icon is shown under key "1", which makes its height different from other keys
-   * in the first row.
+   * <p>When the device is in portrait mode, we first find the maximum height among digit key
+   * layouts. Then for each key, we adjust the height of the layout containing letters/the voice
+   * mail icon to ensure the height of each digit key is the same.
    *
    * <p>This method should be called after the sizes of related layouts have been calculated by the
    * framework.
    */
-  private void adjustKeyHeightsInFirstRow() {
+  private void adjustDigitKeyHeights() {
+    Assert.checkState(!mIsLandscape);
+
     int maxHeight = 0;
-    for (int i = 1; i <= 3; i++) {
+    for (int i = 0; i <= 9; i++) {
       DialpadKeyButton dialpadKey = (DialpadKeyButton) findViewById(BUTTON_IDS[i]);
       LinearLayout keyLayout = (LinearLayout) dialpadKey.findViewById(R.id.dialpad_key_layout);
       maxHeight = Math.max(maxHeight, keyLayout.getHeight());
     }
 
-    for (int i = 1; i <= 3; i++) {
+    for (int i = 0; i <= 9; i++) {
       DialpadKeyButton dialpadKey = (DialpadKeyButton) findViewById(BUTTON_IDS[i]);
       LinearLayout keyLayout = (LinearLayout) dialpadKey.findViewById(R.id.dialpad_key_layout);
 
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
index 12f24ac..769e2d8 100644
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
+++ b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key.xml
@@ -39,7 +39,7 @@
         android:id="@+id/dialpad_key_icon_or_letters_layout"
         style="@style/DialpadKeyInternalLayoutStyle">
 
-      <TextView
+      <com.android.dialer.dialpadview.DialpadTextView
           android:id="@+id/dialpad_key_letters"
           style="@style/DialpadKeyLettersStyle"/>
     </LinearLayout>
diff --git a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_zero.xml b/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_zero.xml
deleted file mode 100644
index 7145072..0000000
--- a/java/com/android/dialer/dialpadview/res/layout-land/dialpad_key_zero.xml
+++ /dev/null
@@ -1,48 +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.
--->
-
-<!-- A layout representing key "0" in the dialpad -->
-<com.android.dialer.dialpadview.DialpadKeyButton
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/zero"
-    style="@style/DialpadKeyButtonStyle">
-
-  <LinearLayout
-      android:id="@+id/dialpad_key_layout"
-      style="@style/DialpadKeyInternalLayoutStyle"
-      android:layout_gravity="right|center_vertical"
-      android:baselineAligned="false"
-      android:orientation="horizontal">
-
-    <FrameLayout
-        android:layout_width="@dimen/dialpad_key_number_width"
-        android:layout_height="wrap_content"
-        android:layout_marginRight="@dimen/dialpad_key_margin_right">
-      <com.android.dialer.dialpadview.DialpadTextView
-          android:id="@+id/dialpad_key_number"
-          style="@style/DialpadBottomKeyNumberStyle"/>
-    </FrameLayout>
-
-    <TextView
-        android:id="@+id/dialpad_key_letters"
-        style="@style/DialpadKeyLettersStyle"/>
-    <!-- A placeholder to make the width the same as other keys. -->
-    <View
-        android:id="@+id/dialpad_key_horizontal_placeholder"
-        android:layout_width="0dp"
-        android:layout_height="match_parent"/>
-  </LinearLayout>
-</com.android.dialer.dialpadview.DialpadKeyButton>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
index 5a14d14..0061d54 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad.xml
@@ -16,84 +16,86 @@
 
 <!-- Dialpad in the Phone app. -->
 <LinearLayout
-  xmlns:android="http://schemas.android.com/apk/res/android"
-  android:id="@+id/dialpad"
-  android:layout_width="match_parent"
-  android:layout_height="match_parent"
-  android:clipChildren="false"
-  android:orientation="vertical">
-  <LinearLayout
+    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="1"
-    android:orientation="horizontal">
+    android:layout_height="match_parent"
+    android:clipChildren="false"
+    android:orientation="vertical">
+  <LinearLayout
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1"
+      android:orientation="horizontal">
     <Space style="@style/DialpadSpaceStyle"/>
     <include layout="@layout/dialpad_key_one"/>
     <include
-      android:id="@+id/two"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/two"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <include
-      android:id="@+id/three"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/three"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <Space style="@style/DialpadSpaceStyle"/>
   </LinearLayout>
 
   <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="1"
-    android:orientation="horizontal">
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1"
+      android:orientation="horizontal">
     <Space style="@style/DialpadSpaceStyle"/>
     <include
-      android:id="@+id/four"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/four"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <include
-      android:id="@+id/five"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/five"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <include
-      android:id="@+id/six"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/six"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <Space style="@style/DialpadSpaceStyle"/>
   </LinearLayout>
 
   <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="1"
-    android:orientation="horizontal">
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1"
+      android:orientation="horizontal">
     <Space style="@style/DialpadSpaceStyle"/>
     <include
-      android:id="@+id/seven"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/seven"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <include
-      android:id="@+id/eight"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/eight"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <include
-      android:id="@+id/nine"
-      style="@style/DialpadKeyButtonStyle"
-      layout="@layout/dialpad_key"/>
+        android:id="@+id/nine"
+        style="@style/DialpadKeyButtonStyle"
+        layout="@layout/dialpad_key"/>
     <Space style="@style/DialpadSpaceStyle"/>
   </LinearLayout>
 
   <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="0dp"
-    android:layout_weight="1"
-    android:orientation="horizontal">
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1"
+      android:orientation="horizontal">
     <Space style="@style/DialpadSpaceStyle"/>
     <include layout="@layout/dialpad_key_star"/>
-    <include layout="@layout/dialpad_key_zero"/>
+    <include
+        android:id="@+id/zero"
+        layout="@layout/dialpad_key"/>
     <include layout="@layout/dialpad_key_pound"/>
     <Space style="@style/DialpadSpaceStyle"/>
   </LinearLayout>
   <Space
-    android:layout_width="match_parent"
-    android:layout_height="?attr/dialpad_end_key_spacing"/>
+      android:layout_width="match_parent"
+      android:layout_height="?attr/dialpad_end_key_spacing"/>
 </LinearLayout>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_key.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_key.xml
index 6c87cd2..bb9ec63 100644
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_key.xml
+++ b/java/com/android/dialer/dialpadview/res/layout/dialpad_key.xml
@@ -31,7 +31,7 @@
         android:id="@+id/dialpad_key_icon_or_letters_layout"
         style="@style/DialpadKeyInternalLayoutStyle">
 
-      <TextView
+      <com.android.dialer.dialpadview.DialpadTextView
           android:id="@+id/dialpad_key_letters"
           style="@style/DialpadKeyLettersStyle"/>
     </LinearLayout>
diff --git a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_zero.xml b/java/com/android/dialer/dialpadview/res/layout/dialpad_key_zero.xml
deleted file mode 100644
index 8d9c7b2..0000000
--- a/java/com/android/dialer/dialpadview/res/layout/dialpad_key_zero.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.
--->
-
-<!-- A layout representing key "0" in the dialpad -->
-<com.android.dialer.dialpadview.DialpadKeyButton
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/zero"
-    style="@style/DialpadKeyButtonStyle">
-
-  <LinearLayout
-      android:id="@+id/dialpad_key_layout"
-      style="@style/DialpadKeyInternalLayoutStyle">
-
-    <com.android.dialer.dialpadview.DialpadTextView
-        android:id="@+id/dialpad_key_number"
-        style="@style/DialpadBottomKeyNumberStyle"/>
-    <TextView
-        android:id="@+id/dialpad_key_letters"
-        style="@style/DialpadKeyLettersStyle"/>
-  </LinearLayout>
-</com.android.dialer.dialpadview.DialpadKeyButton>
diff --git a/java/com/android/dialer/dialpadview/res/values-land/styles.xml b/java/com/android/dialer/dialpadview/res/values-land/styles.xml
index 012cfa2..de9ef1f 100644
--- a/java/com/android/dialer/dialpadview/res/values-land/styles.xml
+++ b/java/com/android/dialer/dialpadview/res/values-land/styles.xml
@@ -37,8 +37,6 @@
     <item name="android:layout_gravity">center</item>
   </style>
 
-  <style name="DialpadBottomKeyNumberStyle" parent="DialpadKeyNumberStyle"/>
-
   <style name="DialpadKeyPoundStyle">
     <item name="android:textColor">?attr/dialpad_text_color_secondary</item>
     <item name="android:textSize">@dimen/dialpad_key_pound_size</item>
@@ -56,6 +54,6 @@
     <item name="android:fontFamily">sans-serif-regular</item>
     <item name="android:layout_width">wrap_content</item>
     <item name="android:layout_height">wrap_content</item>
-    <item name="android:gravity">left</item>
+    <item name="android:layout_gravity">left|center_vertical</item>
   </style>
 </resources>
diff --git a/java/com/android/dialer/dialpadview/res/values/attrs.xml b/java/com/android/dialer/dialpadview/res/values/attrs.xml
index d73946e..9722638 100644
--- a/java/com/android/dialer/dialpadview/res/values/attrs.xml
+++ b/java/com/android/dialer/dialpadview/res/values/attrs.xml
@@ -25,7 +25,6 @@
     <attr format="dimension" name="dialpad_digits_adjustable_height"/>
     <attr format="dimension" name="dialpad_key_numbers_size"/>
     <attr format="dimension" name="dialpad_key_number_margin_bottom"/>
-    <attr format="dimension" name="dialpad_zero_key_number_margin_bottom"/>
   </declare-styleable>
 
   <declare-styleable name="Theme.Dialpad">
diff --git a/java/com/android/dialer/dialpadview/res/values/dimens.xml b/java/com/android/dialer/dialpadview/res/values/dimens.xml
index 1e5880a..797d7e8 100644
--- a/java/com/android/dialer/dialpadview/res/values/dimens.xml
+++ b/java/com/android/dialer/dialpadview/res/values/dimens.xml
@@ -22,8 +22,6 @@
   <dimen name="dialpad_key_star_size">36sp</dimen>
   <dimen name="dialpad_key_height">64dp</dimen>
   <dimen name="dialpad_key_number_default_margin_bottom">3dp</dimen>
-  <!-- Zero key should have less space between self and text because "+" is smaller -->
-  <dimen name="dialpad_zero_key_number_default_margin_bottom">1dp</dimen>
   <dimen name="dialpad_symbol_margin_bottom">13dp</dimen>
   <dimen name="dialpad_digits_text_size">34sp</dimen>
   <dimen name="dialpad_digits_text_min_size">24sp</dimen>
diff --git a/java/com/android/dialer/dialpadview/res/values/styles.xml b/java/com/android/dialer/dialpadview/res/values/styles.xml
index 9d30021..653fe48 100644
--- a/java/com/android/dialer/dialpadview/res/values/styles.xml
+++ b/java/com/android/dialer/dialpadview/res/values/styles.xml
@@ -32,10 +32,6 @@
     <item name="android:gravity">center</item>
   </style>
 
-  <style name="DialpadBottomKeyNumberStyle" parent="DialpadKeyNumberStyle">
-    <item name="android:layout_marginBottom">?attr/dialpad_zero_key_number_margin_bottom</item>
-  </style>
-
   <style name="DialpadKeyStarStyle">
     <item name="android:textColor">?attr/dialpad_text_color_secondary</item>
     <item name="android:textSize">@dimen/dialpad_key_star_size</item>
@@ -44,7 +40,7 @@
     <item name="android:layout_width">wrap_content</item>
     <item name="android:layout_height">wrap_content</item>
     <item name="android:layout_marginBottom">@dimen/dialpad_symbol_margin_bottom</item>
-    <item name="android:gravity">center</item>
+    <item name="android:layout_gravity">center</item>
   </style>
 
   <style name="DialpadKeyPoundStyle">
@@ -55,7 +51,7 @@
     <item name="android:layout_width">wrap_content</item>
     <item name="android:layout_height">wrap_content</item>
     <item name="android:layout_marginBottom">@dimen/dialpad_symbol_margin_bottom</item>
-    <item name="android:gravity">center</item>
+    <item name="android:layout_gravity">center</item>
   </style>
 
   <style name="DialpadKeyLettersStyle">
@@ -64,7 +60,7 @@
     <item name="android:fontFamily">sans-serif-regular</item>
     <item name="android:layout_width">wrap_content</item>
     <item name="android:layout_height">wrap_content</item>
-    <item name="android:gravity">center_horizontal</item>
+    <item name="android:layout_gravity">center</item>
   </style>
 
   <style name="DialpadKeyButtonStyle">
@@ -92,9 +88,6 @@
     <item name="dialpad_key_numbers_size">@dimen/dialpad_key_numbers_default_size</item>
     <item name="dialpad_key_number_margin_bottom">@dimen/dialpad_key_number_default_margin_bottom
     </item>
-    <item name="dialpad_zero_key_number_margin_bottom">
-      @dimen/dialpad_zero_key_number_default_margin_bottom
-    </item>
     <item name="dialpad_end_key_spacing">@dimen/dialpad_bottom_space_height</item>
     <item name="dialpad_elevation">0dp</item>
   </style>
diff --git a/java/com/android/incallui/res/values-sw360dp/dimens.xml b/java/com/android/incallui/res/values-sw360dp/dimens.xml
index ad782e8..bb74a02 100644
--- a/java/com/android/incallui/res/values-sw360dp/dimens.xml
+++ b/java/com/android/incallui/res/values-sw360dp/dimens.xml
@@ -21,10 +21,6 @@
   <dimen name="incall_dialpad_key_number_margin_bottom">
     @dimen/dialpad_key_number_default_margin_bottom
   </dimen>
-  <!-- Zero key should have less space between self and text because "+" is smaller -->
-  <dimen name="incall_dialpad_zero_key_number_margin_bottom">
-    @dimen/dialpad_zero_key_number_default_margin_bottom
-  </dimen>
   <dimen name="incall_dialpad_digits_adjustable_text_size">@dimen/dialpad_digits_text_size</dimen>
   <dimen name="incall_dialpad_digits_adjustable_height">@dimen/dialpad_digits_height</dimen>
   <dimen name="incall_dialpad_key_numbers_size">@dimen/dialpad_key_numbers_default_size</dimen>
diff --git a/java/com/android/incallui/res/values/dimens.xml b/java/com/android/incallui/res/values/dimens.xml
index 9310281..6e37229 100644
--- a/java/com/android/incallui/res/values/dimens.xml
+++ b/java/com/android/incallui/res/values/dimens.xml
@@ -20,8 +20,6 @@
        from dialer. Note, these are the default sizes for small devices. Larger
        screen sizes apply the values in values-sw360dp/dimens.xml. -->
   <dimen name="incall_dialpad_key_number_margin_bottom">1dp</dimen>
-  <!-- Zero key should have less space between self and text because "+" is smaller -->
-  <dimen name="incall_dialpad_zero_key_number_margin_bottom">0dp</dimen>
   <dimen name="incall_dialpad_digits_adjustable_text_size">20sp</dimen>
   <dimen name="incall_dialpad_digits_adjustable_height">50dp</dimen>
   <dimen name="incall_dialpad_key_numbers_size">36dp</dimen>
diff --git a/java/com/android/incallui/res/values/styles.xml b/java/com/android/incallui/res/values/styles.xml
index 5f1aefd..6a26e9c 100644
--- a/java/com/android/incallui/res/values/styles.xml
+++ b/java/com/android/incallui/res/values/styles.xml
@@ -46,9 +46,6 @@
     <item name="dialpad_key_number_margin_bottom">
       @dimen/incall_dialpad_key_number_margin_bottom
     </item>
-    <item name="dialpad_zero_key_number_margin_bottom">
-      @dimen/incall_dialpad_zero_key_number_margin_bottom
-    </item>
     <item name="dialpad_digits_adjustable_text_size">
       @dimen/incall_dialpad_digits_adjustable_text_size
     </item>