diff options
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java index 1e67eec70..0507554a3 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/MiniKeyboardBuilder.java @@ -43,6 +43,7 @@ public class MiniKeyboardBuilder { public final int mNumColumns; public final int mLeftKeys; public final int mRightKeys; // includes default key. + public final int mTopPadding; /** * The object holding mini keyboard layout parameters. @@ -53,14 +54,17 @@ public class MiniKeyboardBuilder { * @param rowHeight mini keyboard row height in pixel, including vertical gap. * @param coordXInParent coordinate x of the popup key in parent keyboard. * @param parentKeyboardWidth parent keyboard width in pixel. + * @param topPadding top padding of mini keyboard, maybe equals to vertical gap of the + * parent keyboard. */ public MiniKeyboardLayoutParams(int numKeys, int maxColumns, int keyWidth, int rowHeight, - int coordXInParent, int parentKeyboardWidth) { + int coordXInParent, int parentKeyboardWidth, int topPadding) { if (parentKeyboardWidth / keyWidth < maxColumns) throw new IllegalArgumentException("Keyboard is too small to hold mini keyboard: " + parentKeyboardWidth + " " + keyWidth + " " + maxColumns); mKeyWidth = keyWidth; mRowHeight = rowHeight; + mTopPadding = topPadding; final int numRows = (numKeys + maxColumns - 1) / maxColumns; mNumRows = numRows; @@ -170,7 +174,7 @@ public class MiniKeyboardBuilder { } public int getY(int row) { - return (mNumRows - 1 - row) * mRowHeight; + return (mNumRows - 1 - row) * mRowHeight + mTopPadding; } public int getRowFlags(int row) { @@ -183,6 +187,14 @@ public class MiniKeyboardBuilder { private boolean isTopRow(int rowCount) { return rowCount == mNumRows - 1; } + + public int getKeyboardHeight() { + return mNumRows * mRowHeight + mTopPadding; + } + + public int getKeyboardWidth() { + return mNumColumns * mKeyWidth; + } } public MiniKeyboardBuilder(KeyboardView view, int layoutTemplateResId, Key parentKey, @@ -199,12 +211,12 @@ public class MiniKeyboardBuilder { mPopupCharacters.length, parentKey.mMaxPopupColumn, keyWidth, parentKeyboard.getRowHeight(), parentKey.mX + (parentKey.mWidth + parentKey.mGap) / 2 - keyWidth / 2, - view.getMeasuredWidth()); + view.getMeasuredWidth(), keyboard.getVerticalGap()); mParams = params; keyboard.setRowHeight(params.mRowHeight); - keyboard.setHeight(params.mNumRows * params.mRowHeight); - keyboard.setMinWidth(params.mNumColumns * params.mKeyWidth); + keyboard.setHeight(params.getKeyboardHeight()); + keyboard.setMinWidth(params.getKeyboardWidth()); keyboard.setDefaultCoordX(params.getDefaultKeyCoordX() + params.mKeyWidth / 2); } |