From ff483e8d0c30864a469481f20a26ffb54a75d458 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" <takaoka@google.com> Date: Thu, 12 May 2011 14:49:18 +0900 Subject: [PATCH] Add minKeyboardHeight attribute to Keyboard layout Bug: 4411676 Change-Id: I1f56ba58bacb90790f82326718bf9de95dba5d28 --- java/res/values-land/dimens.xml | 1 + java/res/values/attrs.xml | 3 +++ java/res/values/dimens.xml | 9 ++++++--- java/res/xml-ar/kbd_qwerty.xml | 3 ++- java/res/xml-cs/kbd_qwerty.xml | 3 ++- java/res/xml-da/kbd_qwerty.xml | 3 ++- java/res/xml-de/kbd_qwerty.xml | 3 ++- java/res/xml-fi/kbd_qwerty.xml | 3 ++- java/res/xml-fr-rCA/kbd_qwerty.xml | 3 ++- java/res/xml-fr-rCH/kbd_qwerty.xml | 3 ++- java/res/xml-fr/kbd_qwerty.xml | 3 ++- java/res/xml-hu/kbd_qwerty.xml | 3 ++- java/res/xml-iw/kbd_qwerty.xml | 3 ++- java/res/xml-nb/kbd_qwerty.xml | 3 ++- java/res/xml-ru/kbd_qwerty.xml | 3 ++- java/res/xml-sr/kbd_qwerty.xml | 3 ++- java/res/xml-sv/kbd_qwerty.xml | 3 ++- java/res/xml-xlarge/kbd_number.xml | 3 ++- java/res/xml-xlarge/kbd_phone.xml | 3 ++- java/res/xml-xlarge/kbd_phone_symbols.xml | 3 ++- java/res/xml-xlarge/kbd_symbols.xml | 3 ++- java/res/xml-xlarge/kbd_symbols_shift.xml | 3 ++- java/res/xml/kbd_number.xml | 3 ++- java/res/xml/kbd_phone.xml | 3 ++- java/res/xml/kbd_phone_symbols.xml | 3 ++- java/res/xml/kbd_qwerty.xml | 3 ++- java/res/xml/kbd_symbols.xml | 3 ++- java/res/xml/kbd_symbols_shift.xml | 3 ++- .../com/android/inputmethod/keyboard/Key.java | 4 ++-- .../inputmethod/keyboard/KeyboardParser.java | 17 ++++++++++++++--- .../inputmethod/keyboard/KeyboardView.java | 2 +- .../keyboard/MiniKeyboardBuilder.java | 10 ++++++---- 32 files changed, 83 insertions(+), 38 deletions(-) diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index c46a517119..496da3de11 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -21,6 +21,7 @@ <resources> <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=0.260in --> <dimen name="keyboardHeight">1.100in</dimen> + <fraction name="minKeyboardHeight">45%p</fraction> <!-- key_height + key_bottom_gap = popup_key_height --> <!-- <dimen name="key_height">0.260in</dimen>--> <dimen name="key_bottom_gap">0.020in</dimen> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index e88b007a96..7f2a400dff 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -80,6 +80,9 @@ <attr name="keyboardHeight" format="dimension" /> <!-- Maximum keyboard height, in pixels or percentage of display height --> <attr name="maxKeyboardHeight" format="dimension|fraction" /> + <!-- Minimum keyboard height represented in pixels, percentage of display height if fraction + is positive, or percentage of display width if fraction is negative. --> + <attr name="minKeyboardHeight" format="dimension|fraction" /> <!-- Default width of a key, in pixels or percentage of display width. --> <attr name="keyWidth" format="dimension|fraction" /> <!-- Default height of a row (key height + vertical gap), in pixels or percentage of diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 69f962f009..82abf3b05b 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -21,6 +21,8 @@ <resources> <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=0.295in --> <dimen name="keyboardHeight">1.285in</dimen> + <fraction name="maxKeyboardHeight">50%p</fraction> + <fraction name="minKeyboardHeight">-61.8%p</fraction> <!-- key_height + key_bottom_gap = popup_key_height --> <!-- <dimen name="key_height">0.295in</dimen> --> <dimen name="key_bottom_gap">0.035in</dimen> @@ -41,10 +43,11 @@ to user's finger. --> <dimen name="keyboard_vertical_correction">-0.05in</dimen> - <dimen name="key_letter_size">0.13in</dimen> - <dimen name="key_label_text_size">0.083in</dimen> + <!-- TODO: use fraction for key letter size and etc. --> + <dimen name="key_letter_size">21dip</dimen> + <dimen name="key_label_text_size">13dip</dimen> <!-- left or right padding of label alignment --> - <dimen name="key_label_horizontal_alignment_padding">0.13in</dimen> + <dimen name="key_label_horizontal_alignment_padding">21dip</dimen> <dimen name="key_preview_height">80sp</dimen> <dimen name="key_preview_offset">0.000in</dimen> <dimen name="key_preview_text_size_large">36sp</dimen> diff --git a/java/res/xml-ar/kbd_qwerty.xml b/java/res/xml-ar/kbd_qwerty.xml index 5faf603369..93310bf9c0 100644 --- a/java/res/xml-ar/kbd_qwerty.xml +++ b/java/res/xml-ar/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-cs/kbd_qwerty.xml b/java/res/xml-cs/kbd_qwerty.xml index 0e6e40d7c9..a74f7fa845 100644 --- a/java/res/xml-cs/kbd_qwerty.xml +++ b/java/res/xml-cs/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml index d9847ae834..12ea33c13c 100644 --- a/java/res/xml-da/kbd_qwerty.xml +++ b/java/res/xml-da/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml index e6569667d8..6ad25b75c7 100644 --- a/java/res/xml-de/kbd_qwerty.xml +++ b/java/res/xml-de/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-fi/kbd_qwerty.xml b/java/res/xml-fi/kbd_qwerty.xml index ea08d670be..e35ab2b418 100644 --- a/java/res/xml-fi/kbd_qwerty.xml +++ b/java/res/xml-fi/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml index f9c29698bd..e649a1e9cd 100644 --- a/java/res/xml-fr-rCA/kbd_qwerty.xml +++ b/java/res/xml-fr-rCA/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml index e47cfd9b4a..f82becb488 100644 --- a/java/res/xml-fr-rCH/kbd_qwerty.xml +++ b/java/res/xml-fr-rCH/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml index 2f8e67bb18..bda69e8074 100644 --- a/java/res/xml-fr/kbd_qwerty.xml +++ b/java/res/xml-fr/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-hu/kbd_qwerty.xml b/java/res/xml-hu/kbd_qwerty.xml index db729cf020..952ad9a0f4 100644 --- a/java/res/xml-hu/kbd_qwerty.xml +++ b/java/res/xml-hu/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml index 4cd565b883..cfe404c9d7 100644 --- a/java/res/xml-iw/kbd_qwerty.xml +++ b/java/res/xml-iw/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml index 7b20ca28d8..e7a743ca9c 100644 --- a/java/res/xml-nb/kbd_qwerty.xml +++ b/java/res/xml-nb/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml index e5aea581eb..0f5fdcd0ac 100644 --- a/java/res/xml-ru/kbd_qwerty.xml +++ b/java/res/xml-ru/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml index 9782cd5eba..6116c7536e 100644 --- a/java/res/xml-sr/kbd_qwerty.xml +++ b/java/res/xml-sr/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml index 3ff1679a21..69f0b3fa09 100644 --- a/java/res/xml-sv/kbd_qwerty.xml +++ b/java/res/xml-sv/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-xlarge/kbd_number.xml index 012b751159..7cb77ea001 100644 --- a/java/res/xml-xlarge/kbd_number.xml +++ b/java/res/xml-xlarge/kbd_number.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml index 9122176a96..60edcf2bdf 100644 --- a/java/res/xml-xlarge/kbd_phone.xml +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml index 055c148674..c388a46672 100644 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml index f1deae0f97..3b9a6b280a 100644 --- a/java/res/xml-xlarge/kbd_symbols.xml +++ b/java/res/xml-xlarge/kbd_symbols.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml index cc23358a52..d7f5958b7f 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml index 7bd679bce5..2556f68300 100644 --- a/java/res/xml/kbd_number.xml +++ b/java/res/xml/kbd_number.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index 62fbdeeec8..ca591c72d3 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 67cd330e77..99db23ef1b 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml index a4251c0bdc..fd43740a73 100644 --- a/java/res/xml/kbd_qwerty.xml +++ b/java/res/xml/kbd_qwerty.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml index 9748bce8b4..a1bd8c04b8 100644 --- a/java/res/xml/kbd_symbols.xml +++ b/java/res/xml/kbd_symbols.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml index 3978f17767..cde07333b5 100644 --- a/java/res/xml/kbd_symbols_shift.xml +++ b/java/res/xml/kbd_symbols_shift.xml @@ -21,7 +21,8 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" latin:keyboardHeight="@dimen/keyboardHeight" - latin:maxKeyboardHeight="50%p" + latin:maxKeyboardHeight="@fraction/maxKeyboardHeight" + latin:minKeyboardHeight="@fraction/minKeyboardHeight" latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 5c59d4441c..33b55b5d39 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -143,9 +143,9 @@ public class Key { * This constructor is being used only for key in mini popup keyboard. */ public Key(Resources res, Keyboard keyboard, CharSequence popupCharacter, int x, int y, - int width, int edgeFlags) { + int width, int height, int edgeFlags) { mKeyboard = keyboard; - mHeight = keyboard.getRowHeight() - keyboard.getVerticalGap(); + mHeight = height - keyboard.getVerticalGap(); mGap = keyboard.getHorizontalGap(); mVisualInsetsLeft = mVisualInsetsRight = 0; mWidth = width - mGap; diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index 69ae7886a2..31fd0bfa32 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -196,9 +196,20 @@ public class KeyboardParser { final int keyboardHeight = (int)keyboardAttr.getDimension( R.styleable.Keyboard_keyboardHeight, displayHeight / 2); final int maxKeyboardHeight = getDimensionOrFraction(keyboardAttr, - R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2); - // Keyboard height will not exceed maxKeyboardHeight. - final int height = Math.min(keyboardHeight, maxKeyboardHeight); + R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2); + int minKeyboardHeight = getDimensionOrFraction(keyboardAttr, + R.styleable.Keyboard_minKeyboardHeight, displayHeight, displayHeight / 2); + if (minKeyboardHeight < 0) { + // Specified fraction was negative, so it should be calculated against display + // width. + final int displayWidth = keyboard.getDisplayWidth(); + minKeyboardHeight = -getDimensionOrFraction(keyboardAttr, + R.styleable.Keyboard_minKeyboardHeight, displayWidth, displayWidth / 2); + } + // Keyboard height will not exceed maxKeyboardHeight and will not be less than + // minKeyboardHeight. + final int height = Math.max( + Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight); final int width = keyboard.getDisplayWidth(); keyboard.setKeyboardHeight(height); diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java index c551ed49f7..bbda4009fa 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java @@ -1078,7 +1078,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { }); final Keyboard keyboard = new MiniKeyboardBuilder(this, mKeyboard.getPopupKeyboardResId(), - parentKey).build(); + parentKey, mKeyboard).build(); miniKeyboardView.setKeyboard(keyboard); container.measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST), diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java index e540fa106e..2b83c3ff5c 100644 --- a/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboardBuilder.java @@ -181,7 +181,8 @@ public class MiniKeyboardBuilder { } } - public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey) { + public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey, + Keyboard parentKeyboard) { final Context context = view.getContext(); mRes = context.getResources(); final MiniKeyboard keyboard = new MiniKeyboard(context, layoutTemplateResId, null); @@ -191,12 +192,13 @@ public class MiniKeyboardBuilder { final int keyWidth = getMaxKeyWidth(view, mPopupCharacters, keyboard.getKeyWidth()); final MiniKeyboardLayoutParams params = new MiniKeyboardLayoutParams( mPopupCharacters.length, parentKey.mMaxPopupColumn, - keyWidth, keyboard.getRowHeight(), + keyWidth, parentKeyboard.getRowHeight(), parentKey.mX + (parentKey.mWidth + parentKey.mGap) / 2 - keyWidth / 2, view.getMeasuredWidth()); mParams = params; - keyboard.setHeight(params.mNumRows * params.mRowHeight - keyboard.getVerticalGap()); + keyboard.setRowHeight(params.mRowHeight); + keyboard.setHeight(params.mNumRows * params.mRowHeight); keyboard.setMinWidth(params.mNumColumns * params.mKeyWidth); keyboard.setDefaultCoordX(params.getDefaultKeyCoordX() + params.mKeyWidth / 2); } @@ -235,7 +237,7 @@ public class MiniKeyboardBuilder { final CharSequence label = mPopupCharacters[n]; final int row = n / params.mNumColumns; final Key key = new Key(mRes, keyboard, label, params.getX(n, row), params.getY(row), - params.mKeyWidth, params.getRowFlags(row)); + params.mKeyWidth, params.mRowHeight, params.getRowFlags(row)); keys.add(key); } return keyboard; -- GitLab