aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java10
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java19
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardParser.java20
-rw-r--r--java/src/com/android/inputmethod/keyboard/Row.java6
4 files changed, 37 insertions, 18 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index cd426690b..4cce2a0db 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);
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,