am c2d7ac79: Tweak key width for \'o\'-popup chars.

Merge commit 'c2d7ac79bdadb4335ed69a4e9631e0ec2e3058f6' into gingerbread-plus-aosp

* commit 'c2d7ac79bdadb4335ed69a4e9631e0ec2e3058f6':
  Tweak key width for 'o'-popup chars.
main
Ken Wakasa 2010-10-10 12:47:23 -07:00 committed by Android Git Automerger
commit fd64e47c2b
4 changed files with 45 additions and 8 deletions

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
**
** Copyright 2010, 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.
*/
-->
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="9.45%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height"
>
</Keyboard>

View File

@ -61,7 +61,7 @@
android:popupCharacters="@string/alternates_for_i" /> android:popupCharacters="@string/alternates_for_i" />
<Key <Key
android:keyLabel="o" android:keyLabel="o"
android:popupKeyboard="@xml/kbd_popup_template" android:popupKeyboard="@xml/kbd_popup_narrow_template"
android:popupCharacters="@string/alternates_for_o" /> android:popupCharacters="@string/alternates_for_o" />
<Key <Key
android:keyLabel="p" android:keyLabel="p"

View File

@ -61,7 +61,7 @@
android:popupCharacters="@string/alternates_for_i" /> android:popupCharacters="@string/alternates_for_i" />
<Key <Key
android:keyLabel="o" android:keyLabel="o"
android:popupKeyboard="@xml/kbd_popup_template" android:popupKeyboard="@xml/kbd_popup_narrow_template"
android:popupCharacters="@string/alternates_for_o" /> android:popupCharacters="@string/alternates_for_o" />
<Key <Key
android:keyLabel="p" android:keyLabel="p"

View File

@ -1087,8 +1087,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
return container; return container;
} }
private static boolean isOneRowKeyboard(Keyboard keyboard) { private static boolean isOneRowKeys(List<Key> keys) {
final List<Key> keys = keyboard.getKeys();
if (keys.size() == 0) return false; if (keys.size() == 0) return false;
final int edgeFlags = keys.get(0).edgeFlags; final int edgeFlags = keys.get(0).edgeFlags;
// HACK: The first key of mini keyboard which was inflated from xml and has multiple rows, // HACK: The first key of mini keyboard which was inflated from xml and has multiple rows,
@ -1125,24 +1124,35 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
getLocationInWindow(mWindowOffset); getLocationInWindow(mWindowOffset);
} }
// Get width of a key in the mini popup keyboard = "miniKeyWidth".
// On the other hand, "popupKey.width" is width of the pressed key on the main keyboard.
// We adjust the position of mini popup keyboard with the edge key in it:
// a) When we have the leftmost key in popup keyboard directly above the pressed key
// Right edges of both keys should be aligned for consistent default selection
// b) When we have the rightmost key in popup keyboard directly above the pressed key
// Left edges of both keys should be aligned for consistent default selection
final List<Key> miniKeys = mMiniKeyboard.getKeyboard().getKeys();
final int miniKeyWidth = miniKeys.size() > 0 ? miniKeys.get(0).width : 0;
// HACK: Have the leftmost number in the popup characters right above the key // HACK: Have the leftmost number in the popup characters right above the key
boolean isNumberAtLeftmost = boolean isNumberAtLeftmost =
hasMultiplePopupChars(popupKey) && isNumberAtLeftmostPopupChar(popupKey); hasMultiplePopupChars(popupKey) && isNumberAtLeftmostPopupChar(popupKey);
int popupX = popupKey.x + mWindowOffset[0]; int popupX = popupKey.x + mWindowOffset[0];
int popupY = popupKey.y + mWindowOffset[1]; popupX += getPaddingLeft();
if (isNumberAtLeftmost) { if (isNumberAtLeftmost) {
popupX += popupKey.width - miniKeyWidth; // adjustment for a) described above
popupX -= container.getPaddingLeft(); popupX -= container.getPaddingLeft();
} else { } else {
popupX += popupKey.width + getPaddingLeft(); popupX += miniKeyWidth; // adjustment for b) described above
popupX -= container.getMeasuredWidth(); popupX -= container.getMeasuredWidth();
popupX += container.getPaddingRight(); popupX += container.getPaddingRight();
} }
int popupY = popupKey.y + mWindowOffset[1];
popupY += getPaddingTop(); popupY += getPaddingTop();
popupY -= container.getMeasuredHeight(); popupY -= container.getMeasuredHeight();
popupY += container.getPaddingBottom(); popupY += container.getPaddingBottom();
final int x = popupX; final int x = popupX;
final int y = mShowPreview && isOneRowKeyboard(mMiniKeyboard.getKeyboard()) final int y = mShowPreview && isOneRowKeys(miniKeys) ? mPopupPreviewDisplayedY : popupY;
? mPopupPreviewDisplayedY : popupY;
int adjustedX = x; int adjustedX = x;
if (x < 0) { if (x < 0) {