diff options
Diffstat (limited to 'java')
56 files changed, 199 insertions, 93 deletions
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml index f7fc4b107..7df124bfc 100644 --- a/java/res/values-land/dimens.xml +++ b/java/res/values-land/dimens.xml @@ -19,8 +19,10 @@ --> <resources> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="keyboardHeight">1.060in</dimen> <!-- key_height + key_bottom_gap = popup_key_height --> - <dimen name="key_height">0.250in</dimen> +<!-- <dimen name="key_height">0.250in</dimen>--> <dimen name="key_bottom_gap">0.020in</dimen> <dimen name="popup_key_height">0.270in</dimen> <dimen name="keyboard_top_padding">0.0in</dimen> diff --git a/java/res/values-xlarge-land/dimens.xml b/java/res/values-xlarge-land/dimens.xml index e1a53f9dc..5b9d50abc 100644 --- a/java/res/values-xlarge-land/dimens.xml +++ b/java/res/values-xlarge-land/dimens.xml @@ -19,7 +19,8 @@ --> <resources> - <dimen name="key_label_text_size">18dip</dimen> + <dimen name="key_letter_size">28dip</dimen> + <dimen name="key_label_text_size">20dip</dimen> <!-- left or right padding of label alignment --> <dimen name="key_label_horizontal_alignment_padding">18dip</dimen> <dimen name="candidate_strip_padding">40.0mm</dimen> diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml index dc1b5c378..dbdfa9631 100644 --- a/java/res/values-xlarge/dimens.xml +++ b/java/res/values-xlarge/dimens.xml @@ -19,8 +19,10 @@ --> <resources> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="keyboardHeight">58.0mm</dimen> <!-- key_height + key_bottom_gap = popup_key_height --> - <dimen name="key_height">14.5mm</dimen> +<!-- <dimen name="key_height">14.5mm</dimen>--> <dimen name="key_bottom_gap">0.0mm</dimen> <dimen name="key_horizontal_gap">0.0mm</dimen> <dimen name="popup_key_height">13.0mm</dimen> @@ -34,13 +36,13 @@ <!-- popup_key_height x -1.0 --> <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen> - <dimen name="key_letter_size">24dip</dimen> - <dimen name="key_label_text_size">14dip</dimen> + <dimen name="key_letter_size">26dip</dimen> + <dimen name="key_label_text_size">16dip</dimen> <dimen name="key_preview_text_size_large">24dip</dimen> <!-- left or right padding of label alignment --> - <dimen name="key_label_horizontal_alignment_padding">4dip</dimen> + <dimen name="key_label_horizontal_alignment_padding">6dip</dimen> - <dimen name="candidate_strip_height">56dip</dimen> + <dimen name="candidate_strip_height">46dip</dimen> <dimen name="candidate_strip_padding">15.0mm</dimen> <dimen name="candidate_text_size">22dip</dimen> </resources> diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 4fc5351bf..55c806ca4 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -76,10 +76,15 @@ </declare-styleable> <declare-styleable name="Keyboard"> + <!-- Default keyboard height --> + <attr name="keyboardHeight" format="dimension" /> + <!-- Maximum keyboard height, in pixels or percentage of display height --> + <attr name="maxKeyboardHeight" 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 key, in pixels or percentage of display width. --> - <attr name="keyHeight" format="dimension|fraction" /> + <!-- Default height of a row (key height + vertical gap), in pixels or percentage of + keyboard height. --> + <attr name="rowHeight" format="dimension|fraction" /> <!-- Default horizontal gap between keys. --> <attr name="horizontalGap" format="dimension|fraction" /> <!-- Default vertical gap between rows of keys. --> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 833963cf7..27d324bd8 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -19,8 +19,10 @@ --> <resources> + <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 --> + <dimen name="keyboardHeight">1.265in</dimen> <!-- key_height + key_bottom_gap = popup_key_height --> - <dimen name="key_height">0.290in</dimen> +<!-- <dimen name="key_height">0.290in</dimen>--> <dimen name="key_bottom_gap">0.035in</dimen> <dimen name="key_horizontal_gap">0.000in</dimen> <dimen name="popup_key_height">0.325in</dimen> diff --git a/java/res/xml-da-xlarge/kbd_qwerty.xml b/java/res/xml-da-xlarge/kbd_qwerty.xml index 3170b0871..2852c765a 100644 --- a/java/res/xml-da-xlarge/kbd_qwerty.xml +++ b/java/res/xml-da-xlarge/kbd_qwerty.xml @@ -26,9 +26,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-da/kbd_qwerty.xml b/java/res/xml-da/kbd_qwerty.xml index ac30b00bb..43215de2d 100644 --- a/java/res/xml-da/kbd_qwerty.xml +++ b/java/res/xml-da/kbd_qwerty.xml @@ -26,10 +26,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.09%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-de-xlarge/kbd_qwerty.xml b/java/res/xml-de-xlarge/kbd_qwerty.xml index 8e8e692cd..3c92b29a1 100644 --- a/java/res/xml-de-xlarge/kbd_qwerty.xml +++ b/java/res/xml-de-xlarge/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwertz_rows" /> diff --git a/java/res/xml-de/kbd_qwerty.xml b/java/res/xml-de/kbd_qwerty.xml index 8e8e692cd..3c92b29a1 100644 --- a/java/res/xml-de/kbd_qwerty.xml +++ b/java/res/xml-de/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwertz_rows" /> diff --git a/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml b/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml index 42f151560..b102eb603 100644 --- a/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml +++ b/java/res/xml-fr-rCA-xlarge/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows" /> diff --git a/java/res/xml-fr-rCA/kbd_qwerty.xml b/java/res/xml-fr-rCA/kbd_qwerty.xml index 42f151560..b102eb603 100644 --- a/java/res/xml-fr-rCA/kbd_qwerty.xml +++ b/java/res/xml-fr-rCA/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows" /> diff --git a/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml b/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml index 8e8e692cd..3c92b29a1 100644 --- a/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml +++ b/java/res/xml-fr-rCH-xlarge/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwertz_rows" /> diff --git a/java/res/xml-fr-rCH/kbd_qwerty.xml b/java/res/xml-fr-rCH/kbd_qwerty.xml index 8e8e692cd..3c92b29a1 100644 --- a/java/res/xml-fr-rCH/kbd_qwerty.xml +++ b/java/res/xml-fr-rCH/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwertz_rows" /> diff --git a/java/res/xml-fr-xlarge/kbd_qwerty.xml b/java/res/xml-fr-xlarge/kbd_qwerty.xml index 8d68a554b..a94384324 100644 --- a/java/res/xml-fr-xlarge/kbd_qwerty.xml +++ b/java/res/xml-fr-xlarge/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_azerty_rows" /> diff --git a/java/res/xml-fr/kbd_qwerty.xml b/java/res/xml-fr/kbd_qwerty.xml index 8d68a554b..a94384324 100644 --- a/java/res/xml-fr/kbd_qwerty.xml +++ b/java/res/xml-fr/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_azerty_rows" /> diff --git a/java/res/xml-iw/kbd_qwerty.xml b/java/res/xml-iw/kbd_qwerty.xml index 514f93572..7d7774efe 100644 --- a/java/res/xml-iw/kbd_qwerty.xml +++ b/java/res/xml-iw/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-nb-xlarge/kbd_qwerty.xml b/java/res/xml-nb-xlarge/kbd_qwerty.xml index b137b5875..e64796628 100644 --- a/java/res/xml-nb-xlarge/kbd_qwerty.xml +++ b/java/res/xml-nb-xlarge/kbd_qwerty.xml @@ -26,9 +26,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-nb/kbd_qwerty.xml b/java/res/xml-nb/kbd_qwerty.xml index fe33e5384..2985354e5 100644 --- a/java/res/xml-nb/kbd_qwerty.xml +++ b/java/res/xml-nb/kbd_qwerty.xml @@ -26,10 +26,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.09%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-ru-xlarge/kbd_qwerty.xml b/java/res/xml-ru-xlarge/kbd_qwerty.xml index fef042100..10f02415b 100644 --- a/java/res/xml-ru-xlarge/kbd_qwerty.xml +++ b/java/res/xml-ru-xlarge/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.091%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-ru/kbd_qwerty.xml b/java/res/xml-ru/kbd_qwerty.xml index d5744c94e..b96c958c7 100644 --- a/java/res/xml-ru/kbd_qwerty.xml +++ b/java/res/xml-ru/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.091%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-sr-xlarge/kbd_qwerty.xml b/java/res/xml-sr-xlarge/kbd_qwerty.xml index 297d72619..7290c13a0 100644 --- a/java/res/xml-sr-xlarge/kbd_qwerty.xml +++ b/java/res/xml-sr-xlarge/kbd_qwerty.xml @@ -21,10 +21,12 @@ <!-- Serbian keyboard layout, based on the X11 layout for Serbian --> <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.09%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-sr/kbd_qwerty.xml b/java/res/xml-sr/kbd_qwerty.xml index 279b0409d..aa025b2cb 100644 --- a/java/res/xml-sr/kbd_qwerty.xml +++ b/java/res/xml-sr/kbd_qwerty.xml @@ -21,10 +21,12 @@ <!-- Serbian keyboard layout, based on the X11 layout for Serbian --> <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.09%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-sv-xlarge/kbd_qwerty.xml b/java/res/xml-sv-xlarge/kbd_qwerty.xml index 80d94538f..b6c80ad87 100644 --- a/java/res/xml-sv-xlarge/kbd_qwerty.xml +++ b/java/res/xml-sv-xlarge/kbd_qwerty.xml @@ -28,9 +28,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-sv/kbd_qwerty.xml b/java/res/xml-sv/kbd_qwerty.xml index 464a463a1..b3d1b8784 100644 --- a/java/res/xml-sv/kbd_qwerty.xml +++ b/java/res/xml-sv/kbd_qwerty.xml @@ -28,10 +28,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="9.09%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows_scandinavia" /> diff --git a/java/res/xml-xlarge-land/kbd_popup_template.xml b/java/res/xml-xlarge-land/kbd_popup_template.xml index fd348f225..3caae1a60 100644 --- a/java/res/xml-xlarge-land/kbd_popup_template.xml +++ b/java/res/xml-xlarge-land/kbd_popup_template.xml @@ -22,6 +22,6 @@ latin:keyWidth="3.5%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml-xlarge-land/popup_domains.xml b/java/res/xml-xlarge-land/popup_domains.xml index deedba451..03a3846f9 100644 --- a/java/res/xml-xlarge-land/popup_domains.xml +++ b/java/res/xml-xlarge-land/popup_domains.xml @@ -23,7 +23,7 @@ latin:keyWidth="4.0%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml-xlarge-land/popup_smileys.xml b/java/res/xml-xlarge-land/popup_smileys.xml index e882a5071..cc4acb06e 100644 --- a/java/res/xml-xlarge-land/popup_smileys.xml +++ b/java/res/xml-xlarge-land/popup_smileys.xml @@ -23,7 +23,7 @@ latin:keyWidth="4.0%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top" diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-xlarge/kbd_number.xml index 119846632..11cf8fb86 100644 --- a/java/res/xml-xlarge/kbd_number.xml +++ b/java/res/xml-xlarge/kbd_number.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml index 5a6ec9a88..6389a8ccd 100644 --- a/java/res/xml-xlarge/kbd_phone.xml +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml index 743f5a5ae..59d8181f6 100644 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="11.949%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-xlarge/kbd_popup_template.xml b/java/res/xml-xlarge/kbd_popup_template.xml index aa99cee03..7d39d1a3a 100644 --- a/java/res/xml-xlarge/kbd_popup_template.xml +++ b/java/res/xml-xlarge/kbd_popup_template.xml @@ -22,6 +22,6 @@ latin:keyWidth="5.0%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml index 56cfe000e..75fe183a3 100644 --- a/java/res/xml-xlarge/kbd_qwerty.xml +++ b/java/res/xml-xlarge/kbd_qwerty.xml @@ -20,9 +20,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows" /> diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml index 6701c9c01..f5d0c4c47 100644 --- a/java/res/xml-xlarge/kbd_symbols.xml +++ b/java/res/xml-xlarge/kbd_symbols.xml @@ -20,9 +20,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml index b635271f2..99f48ebd9 100644 --- a/java/res/xml-xlarge/kbd_symbols_shift.xml +++ b/java/res/xml-xlarge/kbd_symbols_shift.xml @@ -20,9 +20,11 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml-xlarge/popup_domains.xml b/java/res/xml-xlarge/popup_domains.xml index be0c91810..6d65c898b 100644 --- a/java/res/xml-xlarge/popup_domains.xml +++ b/java/res/xml-xlarge/popup_domains.xml @@ -23,7 +23,7 @@ latin:keyWidth="5.5%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml-xlarge/popup_smileys.xml b/java/res/xml-xlarge/popup_smileys.xml index bdd6805da..552dc42a7 100644 --- a/java/res/xml-xlarge/popup_smileys.xml +++ b/java/res/xml-xlarge/popup_smileys.xml @@ -23,7 +23,7 @@ latin:keyWidth="5.0%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top" diff --git a/java/res/xml/kbd_number.xml b/java/res/xml/kbd_number.xml index cde7205bc..f09da8683 100644 --- a/java/res/xml/kbd_number.xml +++ b/java/res/xml/kbd_number.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index 7e146ed69..fb0e6d7f2 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 1bb4bac74..a5ff5d2c6 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="26.67%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml/kbd_popup_narrow_template.xml b/java/res/xml/kbd_popup_narrow_template.xml index 9b78711a0..36caf1c15 100644 --- a/java/res/xml/kbd_popup_narrow_template.xml +++ b/java/res/xml/kbd_popup_narrow_template.xml @@ -22,6 +22,6 @@ latin:keyWidth="9.45%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml/kbd_popup_template.xml b/java/res/xml/kbd_popup_template.xml index 004d490d6..9ee27493d 100644 --- a/java/res/xml/kbd_popup_template.xml +++ b/java/res/xml/kbd_popup_template.xml @@ -22,6 +22,6 @@ latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > </Keyboard> diff --git a/java/res/xml/kbd_qwerty.xml b/java/res/xml/kbd_qwerty.xml index 42f151560..b102eb603 100644 --- a/java/res/xml/kbd_qwerty.xml +++ b/java/res/xml/kbd_qwerty.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_qwerty_rows" /> diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml index 7264179b9..a7da01151 100644 --- a/java/res/xml/kbd_symbols.xml +++ b/java/res/xml/kbd_symbols.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml index 83963bfc5..ee8d88218 100644 --- a/java/res/xml/kbd_symbols_shift.xml +++ b/java/res/xml/kbd_symbols_shift.xml @@ -20,10 +20,12 @@ <Keyboard xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" + latin:keyboardHeight="@dimen/keyboardHeight" + latin:maxKeyboardHeight="50%p" + latin:rowHeight="25%p" latin:keyWidth="10%p" latin:horizontalGap="@dimen/key_horizontal_gap" latin:verticalGap="@dimen/key_bottom_gap" - latin:keyHeight="@dimen/key_height" > <include latin:keyboardLayout="@xml/kbd_key_styles" /> diff --git a/java/res/xml/popup_at.xml b/java/res/xml/popup_at.xml index 4b19d4fd4..92ad81616 100644 --- a/java/res/xml/popup_at.xml +++ b/java/res/xml/popup_at.xml @@ -23,7 +23,7 @@ latin:keyWidth="10%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml/popup_comma.xml b/java/res/xml/popup_comma.xml index cef836acd..9ef49dfda 100644 --- a/java/res/xml/popup_comma.xml +++ b/java/res/xml/popup_comma.xml @@ -23,7 +23,7 @@ latin:keyWidth="10%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml/popup_domains.xml b/java/res/xml/popup_domains.xml index 5f92e2f74..9fbbdec11 100644 --- a/java/res/xml/popup_domains.xml +++ b/java/res/xml/popup_domains.xml @@ -23,7 +23,7 @@ latin:keyWidth="15%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml/popup_mic.xml b/java/res/xml/popup_mic.xml index 99c97ce39..1851eba98 100644 --- a/java/res/xml/popup_mic.xml +++ b/java/res/xml/popup_mic.xml @@ -23,7 +23,7 @@ latin:keyWidth="10%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml/popup_punctuation.xml b/java/res/xml/popup_punctuation.xml index 76572b06a..6c778c724 100644 --- a/java/res/xml/popup_punctuation.xml +++ b/java/res/xml/popup_punctuation.xml @@ -23,7 +23,7 @@ latin:keyWidth="10%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top" diff --git a/java/res/xml/popup_slash.xml b/java/res/xml/popup_slash.xml index 1ace909ef..611500c9e 100644 --- a/java/res/xml/popup_slash.xml +++ b/java/res/xml/popup_slash.xml @@ -23,7 +23,7 @@ latin:keyWidth="10%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top|bottom" diff --git a/java/res/xml/popup_smileys.xml b/java/res/xml/popup_smileys.xml index 2f082318a..b87667222 100644 --- a/java/res/xml/popup_smileys.xml +++ b/java/res/xml/popup_smileys.xml @@ -23,7 +23,7 @@ latin:keyWidth="15%p" latin:horizontalGap="0px" latin:verticalGap="0px" - latin:keyHeight="@dimen/popup_key_height" + latin:rowHeight="@dimen/popup_key_height" > <Row latin:rowEdgeFlags="top" diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index cd426690b..e74c968ff 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -139,7 +139,7 @@ public class Key { /** Create an empty key with no attributes. */ public Key(Row row, char letter, int x, int y) { mKeyboard = row.getKeyboard(); - mHeight = row.mDefaultHeight; + mHeight = row.mDefaultHeight - row.mVerticalGap; mGap = row.mDefaultHorizontalGap; mWidth = row.mDefaultWidth - mGap; mEdgeFlags = row.mRowEdgeFlags; @@ -176,14 +176,14 @@ public class Key { TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); mHeight = KeyboardParser.getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, - mKeyboard.getKeyboardHeight(), row.mDefaultHeight); + R.styleable.Keyboard_rowHeight, + mKeyboard.getKeyboardHeight(), row.mDefaultHeight) - row.mVerticalGap; mGap = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, - mKeyboard.getKeyboardWidth(), row.mDefaultHorizontalGap); + mKeyboard.getDisplayWidth(), row.mDefaultHorizontalGap); mWidth = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, - mKeyboard.getKeyboardWidth(), row.mDefaultWidth) - mGap; + mKeyboard.getDisplayWidth(), row.mDefaultWidth) - mGap; a.recycle(); a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard_Key); @@ -202,25 +202,27 @@ public class Key { this.mX = x + mGap / 2; this.mY = y; - mPreviewIcon = style.getDrawable(a, R.styleable.Keyboard_Key_iconPreview); - Keyboard.setDefaultBounds(mPreviewIcon); final CharSequence popupCharacters = style.getText(a, R.styleable.Keyboard_Key_popupCharacters); final int popupResId = style.getResourceId(a, R.styleable.Keyboard_Key_popupKeyboard, 0); - // Set popup keyboard resource and characters only when both are specified. - if (popupResId != 0 && !TextUtils.isEmpty(popupCharacters)) { - mPopupResId = popupResId; - mPopupCharacters = popupCharacters; - } else { + // We should not display mini keyboard when both popupResId and popupCharacters are + // specified but popupCharacters is empty string. + if (popupResId != 0 && popupCharacters != null && popupCharacters.length() == 0) { mPopupResId = 0; mPopupCharacters = null; + } else { + mPopupResId = popupResId; + mPopupCharacters = popupCharacters; } + mRepeatable = style.getBoolean(a, R.styleable.Keyboard_Key_isRepeatable, false); mModifier = style.getBoolean(a, R.styleable.Keyboard_Key_isModifier, false); mSticky = style.getBoolean(a, R.styleable.Keyboard_Key_isSticky, false); mEdgeFlags = style.getFlag(a, R.styleable.Keyboard_Key_keyEdgeFlags, 0) | row.mRowEdgeFlags; + mPreviewIcon = style.getDrawable(a, R.styleable.Keyboard_Key_iconPreview); + Keyboard.setDefaultBounds(mPreviewIcon); mIcon = style.getDrawable(a, R.styleable.Keyboard_Key_keyIcon); Keyboard.setDefaultBounds(mIcon); mHintIcon = style.getDrawable(a, R.styleable.Keyboard_Key_keyHintIcon); diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java index 6a1d62efe..7641b4d7a 100644 --- a/java/src/com/android/inputmethod/keyboard/Keyboard.java +++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java @@ -122,6 +122,9 @@ public class Keyboard { /** Height of the screen */ private final int mDisplayHeight; + /** Height of keyboard */ + private int mKeyboardHeight; + public final KeyboardId mId; // Variables for pre-computing nearest keys. @@ -248,11 +251,11 @@ public class Keyboard { mDefaultVerticalGap = gap; } - public int getKeyHeight() { + public int getRowHeight() { return mDefaultHeight; } - public void setKeyHeight(int height) { + public void setRowHeight(int height) { mDefaultHeight = height; } @@ -278,14 +281,22 @@ public class Keyboard { return mTotalWidth; } - public int getKeyboardHeight() { + public int getDisplayHeight() { return mDisplayHeight; } - public int getKeyboardWidth() { + public int getDisplayWidth() { return mDisplayWidth; } + public int getKeyboardHeight() { + return mKeyboardHeight; + } + + public void setKeyboardHeight(int height) { + mKeyboardHeight = height; + } + public List<Key> getShiftKeys() { return mShiftKeys; } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java index dd80f0ed0..213eac567 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardParser.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardParser.java @@ -161,12 +161,20 @@ public class KeyboardParser { final Keyboard keyboard = mKeyboard; final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); - final int width = keyboard.getKeyboardWidth(); - final int height = keyboard.getKeyboardHeight(); + final int displayHeight = keyboard.getDisplayHeight(); + final int keyboardHeight = (int)a.getDimension( + R.styleable.Keyboard_keyboardHeight, displayHeight / 2); + final int maxKeyboardHeight = getDimensionOrFraction(a, + R.styleable.Keyboard_maxKeyboardHeight, displayHeight, displayHeight / 2); + // Keyboard height will not exceed maxKeyboardHeight. + final int height = Math.min(keyboardHeight, maxKeyboardHeight); + final int width = keyboard.getDisplayWidth(); + + keyboard.setKeyboardHeight(height); keyboard.setKeyWidth(getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, width, width / 10)); - keyboard.setKeyHeight(getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, height, 50)); + keyboard.setRowHeight(getDimensionOrFraction(a, + R.styleable.Keyboard_rowHeight, height, 50)); keyboard.setHorizontalGap(getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, width, 0)); keyboard.setVerticalGap(getDimensionOrFraction(a, @@ -280,7 +288,7 @@ public class KeyboardParser { final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); final int gap = getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, - mKeyboard.getKeyboardWidth(), 0); + mKeyboard.getDisplayWidth(), 0); a.recycle(); checkEndTag(TAG_SPACER, parser); setSpacer(gap); @@ -494,7 +502,7 @@ public class KeyboardParser { private void endRow() { if (mCurrentRow == null) throw new InflateException("orphant end row tag"); - mCurrentY += mCurrentRow.mVerticalGap + mCurrentRow.mDefaultHeight; + mCurrentY += mCurrentRow.mDefaultHeight; mCurrentRow = null; } diff --git a/java/src/com/android/inputmethod/keyboard/Row.java b/java/src/com/android/inputmethod/keyboard/Row.java index 37fa4e39e..7c158bca0 100644 --- a/java/src/com/android/inputmethod/keyboard/Row.java +++ b/java/src/com/android/inputmethod/keyboard/Row.java @@ -47,7 +47,7 @@ public class Row { public Row(Keyboard keyboard) { this.mKeyboard = keyboard; - mDefaultHeight = keyboard.getKeyHeight(); + mDefaultHeight = keyboard.getRowHeight(); mDefaultWidth = keyboard.getKeyWidth(); mDefaultHorizontalGap = keyboard.getHorizontalGap(); mVerticalGap = keyboard.getVerticalGap(); @@ -56,14 +56,14 @@ public class Row { public Row(Resources res, Keyboard keyboard, XmlResourceParser parser) { this.mKeyboard = keyboard; - final int keyboardWidth = keyboard.getKeyboardWidth(); + final int keyboardWidth = keyboard.getDisplayWidth(); final int keyboardHeight = keyboard.getKeyboardHeight(); TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.Keyboard); mDefaultWidth = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_keyWidth, keyboardWidth, keyboard.getKeyWidth()); mDefaultHeight = KeyboardParser.getDimensionOrFraction(a, - R.styleable.Keyboard_keyHeight, keyboardHeight, keyboard.getKeyHeight()); + R.styleable.Keyboard_rowHeight, keyboardHeight, keyboard.getRowHeight()); mDefaultHorizontalGap = KeyboardParser.getDimensionOrFraction(a, R.styleable.Keyboard_horizontalGap, keyboardWidth, keyboard.getHorizontalGap()); mVerticalGap = KeyboardParser.getDimensionOrFraction(a, diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java index 460ef8650..bb3c09d60 100644 --- a/java/src/com/android/inputmethod/latin/CandidateView.java +++ b/java/src/com/android/inputmethod/latin/CandidateView.java @@ -21,7 +21,12 @@ import android.content.res.Resources; import android.graphics.Typeface; import android.os.Handler; import android.os.Message; +import android.text.Spannable; +import android.text.SpannableString; import android.text.TextUtils; +import android.text.style.CharacterStyle; +import android.text.style.StyleSpan; +import android.text.style.UnderlineSpan; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; @@ -50,6 +55,8 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo private final int mColorNormal; private final int mColorRecommended; private final int mColorOther; + private static final StyleSpan BOLD_SPAN = new StyleSpan(Typeface.BOLD); + private static final CharacterStyle UNDERLINE_SPAN = new UnderlineSpan(); private boolean mShowingCompletions; @@ -136,21 +143,25 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo View v = mWords.get(i); TextView tv = (TextView)v.findViewById(R.id.candidate_word); - tv.setTypeface(Typeface.DEFAULT); tv.setTextColor(mColorNormal); - if (mConfigCandidateHighlightFontColorEnabled) { - if (haveMinimalSuggestion - && ((i == 1 && !typedWordValid) || (i == 0 && typedWordValid))) { - tv.setTypeface(Typeface.DEFAULT_BOLD); + if (haveMinimalSuggestion + && ((i == 1 && !typedWordValid) || (i == 0 && typedWordValid))) { + final Spannable word = new SpannableString(suggestion); + if (mConfigCandidateHighlightFontColorEnabled) { + word.setSpan(BOLD_SPAN, 0, wordLength, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); tv.setTextColor(mColorRecommended); - existsAutoCompletion = true; - } else if (i != 0 || (wordLength == 1 && count > 1)) { - // HACK: even if i == 0, we use mColorOther when this suggestion's length is 1 - // and there are multiple suggestions, such as the default punctuation list. - tv.setTextColor(mColorOther); + } else { + word.setSpan(UNDERLINE_SPAN, 0, wordLength, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); } - } else { - // TODO: Display underline for the auto-correction word + suggestion = word; + existsAutoCompletion = true; + } else if (i != 0 || (wordLength == 1 && count > 1)) { + // HACK: even if i == 0, we use mColorOther when this + // suggestion's length is 1 + // and there are multiple suggestions, such as the default + // punctuation list. + if (mConfigCandidateHighlightFontColorEnabled) + tv.setTextColor(mColorOther); } tv.setText(suggestion); tv.setClickable(true); |