diff options
author | linyuh <linyuh@google.com> | 2017-10-31 10:29:45 -0700 |
---|---|---|
committer | zachh <zachh@google.com> | 2017-11-01 21:58:48 +0000 |
commit | bd03600f8403816a1225bc8208da133896ab22b4 (patch) | |
tree | a90a38f8cafd7a1f5a2604eb3750976ca0c81cda | |
parent | 1d1ac5b5a783e06ecda0adceda7df0af8a5566bc (diff) |
Use DialpadTextView instead of TextView to show letters under each digit key.
Bug: 30215380
Test: Manual
PiperOrigin-RevId: 174055180
Change-Id: Iac6deb8f9dcb6f3e9da6dfd0d732f29cc34bb7f6
14 files changed, 69 insertions, 167 deletions
diff --git a/java/com/android/dialer/dialpadview/DialpadTextView.java b/java/com/android/dialer/dialpadview/DialpadTextView.java index 5b1b7bb5d..b1eee4b9c 100644 --- a/java/com/android/dialer/dialpadview/DialpadTextView.java +++ b/java/com/android/dialer/dialpadview/DialpadTextView.java @@ -24,8 +24,8 @@ import android.util.AttributeSet; 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 d70b0a6c2..5e79cb59f 100644 --- a/java/com/android/dialer/dialpadview/DialpadView.java +++ b/java/com/android/dialer/dialpadview/DialpadView.java @@ -223,29 +223,32 @@ public class DialpadView extends LinearLayout { 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 12f24ac52..769e2d8bb 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 714507202..000000000 --- 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 5a14d14ea..0061d5497 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 6c87cd2b4..bb9ec63f6 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 8d9c7b216..000000000 --- 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 012cfa2b2..de9ef1fbf 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 d73946e65..972263883 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 1e5880a3e..797d7e839 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 9d30021b9..653fe484f 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 ad782e809..bb74a0208 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 93102812c..6e3722995 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 5f1aefda1..6a26e9c14 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> |